该href属性与本页面url同源

该href属性与本页面url不同源

如果要使用a标签的download属性来通过浏览器下载文件,可在caniuse查询浏览器兼容性。

截至目前(2017.4.8),firefox仅可以下载第一个链接里的文件,chrome可以下载所有链接里的文件。因为firefox要求a标签的href属性与页面url同源才可触发下载,而chrome则无此限制。Edge和Opera的新版本也支持该属性,但我尚不清楚是否有特殊的要求(例如firefox有同源限制)。

如果href链接的文件已有文件名,则download属性中指示的文件名将被忽略;如果href链接的文件没有文件名(如由blob对象创建的url,或base64图片),浏览器会使用download属性中指示的文件名为其命名。

如果HTTP头里Content-Disposition定义了一个和download属性里不同的文件名,firefox将使用Content-Disposition定义的文件名来命名。
示例:Content-disposition: attachment; filename=foobar.pdf

Content-Disposition还可以定义处理方式为inline还是attachment。如果HTTP头里有Content-Disposition并且其处理方式为inline或缺省,那么firefox将不触发下载,而是在浏览器内显示文件。chrome则始终使用a标签的download属性来下载文件。
然而如果同时指定了ContentType为application/octet-stream,那我估计firefox会无视inline,而是下载(猜测)

参阅firefox文档