我尝试从<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属性仅适用于本地路由?
提前致谢!
答案 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标头将文件明确标记为要下载。
如果算法到达此步骤,则从a开始下载 与下载的资源和起源不同的起源 没有标记该文件适合下载和下载 不是由用户发起的。这可能是因为下载 属性用于触发下载,或者因为资源在中 问题不是用户代理支持的类型。
这可能很危险,因为,例如,恶意服务器可以 试图让用户在不知不觉中下载私人信息 然后通过欺骗用户将其重新上传到恶意服务器 认为数据来自恶意服务器。
因此,以某种方式通知用户符合用户的利益 有问题的资源来自完全不同的来源,并且 防止混淆,任何建议的文件名来自潜在的 应忽略敌对界面起源。