下载html属性不会使用外部URL重命名该文件

时间:2017-11-09 12:05:12

标签: html

我尝试从<a>标记下载文件时重命名文件。

这是一个简单的例子:

<a href="https://i.stack.imgur.com/440u9.png" download="stackoverflow.png">Download Stackoverflow Logo</a>

正如您所看到的,它永远不会使用stackoverflow.png名称下载文件,但它使用默认名称。

尽管如此,如果我下载图像并尝试使用本地路由进行相同操作,则会正确重命名文件。

另一个例子:

<a href="./images/440u9.png" download="stackoverflow.png">Download Stackoverflow Logo</a>

上面的例子工作正常。

为什么download html属性仅适用于本地路由?

提前致谢!

3 个答案:

答案 0 :(得分:2)

属性download works only for same origin URLs

顺便说一下,你真的应该学习使用正确的术语,否则人们就会理解你:

  • <a href="https://i.stack.imgur.com/440u9.png" download="stackoverflow.png">标记,特别是开头标记;
  • download属性;
  • stackoverflow.png是该属性的;
  • https://i.stack.imgur.com/440u9.png是一个URL,有时称为URI或地址。
  • 整个构造<a href="https://i.stack.imgur.com/440u9.png" download="stackoverflow.png">Download Stackoverflow Logo</a>元素

“路线”完全是另一回事,与HTML无关。

答案 1 :(得分:0)

我找不到它的任何信息,但似乎不允许外部资源重命名。

看看here,有一个链接到谷歌图片的示例,但也不起作用 - 似乎规格已经改变了。

答案 2 :(得分:0)

这是一种应用于跨源下载请求的安全措施,其中托管下载的服务器不使用HTTP标头将文件明确标记为要下载。

来自the HTML specification

  

如果算法到达此步骤,则从a开始下载   与下载的资源和起源不同的起源   没有标记该文件适合下载和下载   不是由用户发起的。这可能是因为下载   属性用于触发下载,或者因为资源在中   问题不是用户代理支持的类型。

     

这可能很危险,因为,例如,恶意服务器可以   试图让用户在不知不觉中下载私人信息   然后通过欺骗用户将其重新上传到恶意服务器   认为数据来自恶意服务器。

     

因此,以某种方式通知用户符合用户的利益   有问题的资源来自完全不同的来源,并且   防止混淆,任何建议的文件名来自潜在的   应忽略敌对界面起源。