Express.js send() 不会提示通过邮件客户端下载

Express.js send() will not prompt download through email client

我目前正在测试 api。我正在使用 ngrok 使具有 api 代码的本地服务器对 Internet 可见。例如,如果我有一个像 http://something.ngrok.io/api/spreadsheet?param1=123&param2=001,002 这样的 link,当您单击 link 时应该发生什么是使用 exceljs 动态构建并发送到客户端的电子表格使用快递。这是代码片段:

const buffer = await workbook.xlsx.writeBuffer()
res.status(200)
res.set("Content-Type", "application/octet-stream")
res.attachment("spreadsheet.xlsx")
res.send(buffer)

我想不通的奇怪事情是,当您将 ngrok link 复制并粘贴到您的浏览器时,它会提示电子表格下载,正如我希望的那样。当您通过电子邮件客户端向某人发送 link 并尝试单击它时,它会打开一个新选项卡,就像它会提示下载一样,但一两秒钟后选项卡就会关闭,没有其他任何反应。这是因为某些电子邮件客户端安全性吗?有没有办法允许下载?

对于以后遇到此问题的任何人,请描述此问题 here。事实证明,ngrok 默认情况下会创建一个 http 隧道,电子邮件客户端需要使用 https 才能继续下载。