【问题标题】:Difference between Content-Disposition: attachment and <a>'s download attributeContent-Disposition: attachment 和 <a> 的下载属性的区别
【发布时间】:2021-07-25 17:38:50
【问题描述】:
当HTTP请求的响应头为Content-Disposition: attachment; filename=image.gif时,浏览器会下载响应体为"image.gif"。当锚标记将下载 enter code hereattribute 设置为 "image.gif" 时,似乎也可以实现。
那么这两者有什么区别呢? Content-Disposition: attachment 方法在支持锚标签上的“download”属性的浏览器中不再有用吗?
【问题讨论】:
标签:
html
download
http-headers
【解决方案1】:
Content-Disposition 仍然有用。
下载属性将优先于文件名的 Content-Disposition:
如果 Content-Disposition 标头具有与下载属性不同的信息,则结果行为可能会有所不同:
如果标头指定了文件名,则它优先于下载属性中指定的文件名。
如果标头指定了内联、Chrome 和 Firefox 82 及更高版本的配置,则优先考虑该属性并将其视为下载。 82 之前的 Firefox 版本优先考虑标题并内联显示内容。
MDN
但是,您不必使用 HTML5 下载属性,因此 Content-Disposition 是服务器可以在没有客户端方向的情况下决定文件名的另一种方式。
另外需要注意的是,download 属性只能在同源下工作,所以如果来源不同,没有 Content-Disposition 附件就不能工作。