Content-Disposition: 附件和 <a> 的下载属性之间的区别

Difference between Content-Disposition: attachment and <a>'s download attribute

当 HTTP 请求的响应 header 为 Content-Disposition: attachment; filename=image.gif 时,响应 body 被浏览器下载为 "image.gif"。 =22=]。当锚标记的下载 enter code here 属性设置为 "image.gif".

时,似乎可以实现同样的效果

那这两者有什么区别呢? Content-Disposition: attachment 方法在支持锚标记上的“download”属性的浏览器中是否不再有用?

Content-Disposition还是有用的

下载属性将优先于文件名的 Content-Disposition:

If the Content-Disposition header has different information from the download attribute, resulting behavior may differ: If the header specifies a filename, it takes priority over a filename specified in the download attribute. If the header specifies a disposition of inline, Chrome, and Firefox 82 and later, prioritize the attribute and treat it as a download. Firefox versions before 82 prioritize the header and will display the content inline.

MDN

然而,您不必使用 HTML5 下载属性,因此 Content-Disposition 是服务器可以在没有客户端指示的情况下决定文件名的另一种方式。

另外请注意,下载属性仅适用于 same-origin,因此如果来源不同,则没有 Content-Disposition 附件将无法使用。