给定 https://www.example.com/image-list
:
...
<a href="/image/1337">
<img src="//static.example.com/thumbnails/86fb269d190d2c85f6e0468ceca42a20.png"/>
</a>
<a href="//static.example.com/full/86fb269d190d2c85f6e0468ceca42a20.png"
download="1337 - Hello world!.png">
Download
</a>
...
这是一个用户脚本环境,所以我无法访问服务器配置。因此:
- 我无法使服务器接受用户友好的文件名,如
https://static.example.com/full/86fb269d190d2c85f6e0468ceca42a20 - 1337 - Hello World!.png
。 - 我无法配置跨域资源共享。由于设计上,
www.example.com
和static.example.com
之间被CORS隔离。
如何使Firefox和Chrome在用户单击“下载”链接时显示带有建议文件名"1337 - Hello world!.png" 的“保存文件为”对话框?
经过一些尝试和搜索,我了解到以下问题:
- Firefox完全忽略某些图像MIME类型上存在的
download
属性。 - Firefox完全忽略跨站点链接上存在的
download
属性。 - Chrome完全忽略跨站点链接上
download
属性的值。
对我来说,所有这些都毫无意义,看起来都像是“让我们对该功能施加随机荒谬的限制”,但由于我的环境,我不得不接受它们。
有解决问题的任何方法吗?
背景:我正在为一个使用MD5哈希作为文件名的图像板编写用户脚本。我希望更轻松地使用用户友好的文件名进行保存。任何能让我更接近这一目标的方法都会有所帮助。
我猜我可以通过使用对象URL到blob和具有黑客CORS头的本地代理来避开限制,但这个设置显然是不合理的。通过canvas进行保存可能有效(在这种情况下,图像是否也受CORS的保护?),但它将强制进行双重有损压缩或有损转无损转换,鉴于JPEG文件,这两者都不太好。
www.example.com
和static.example.com
。您的环境是否类似于这种情况,即这两个域是同一父级超级域的子域(例如example.com
)? - pseudosavant