Javascript 八位字节流数据URI忽略<;a>';下载';属性

Javascript 八位字节流数据URI忽略<;a>';下载';属性,javascript,jquery,html,http-headers,Javascript,Jquery,Html,Http Headers,我的页面上有一个下载按钮,如下所示: <a download="test.jpg" href="data:application/octet-stream;base64,/9j/4AAQSkZ...">Download</a> href属性由JavaScript填充,在我的测试服务器上,它的功能完全符合我的预期:它会提示一个文件名为“test.jpg”的“另存为”对话框 但是,当我在不同的实时服务器上使用完全相同的代码时,文件名会被删除 在Chrome中,它保存为

我的页面上有一个下载按钮,如下所示:

<a download="test.jpg" href="data:application/octet-stream;base64,/9j/4AAQSkZ...">Download</a>

href
属性由JavaScript填充,在我的测试服务器上,它的功能完全符合我的预期:它会提示一个文件名为“test.jpg”的“另存为”对话框

但是,当我在不同的实时服务器上使用完全相同的代码时,文件名会被删除

  • 在Chrome中,它保存为“下载”,没有文件扩展名
  • 在Firefox中,它保存为看似随机的字符串,同样没有文件扩展名

您知道是什么原因导致两台服务器之间的行为差异吗?

这是一种安全措施,适用于保存异地下载。由于protocols不匹配(数据与http),因此它被视为不同的站点,并应用默认名称。使用URL.createObjectURL而不是base64来提供下载的href。您可以获取一个,然后将Blob馈送到createObjectURL()