我在使用IE8时遇到问题,其中带有查询字符串的网址在下载时被破坏。
特别是像
这样的网址http://domain.com/software/Software%202.1%20Beta.exe?AWSAccessKeyId=1HCB7Z221V5CV2K1ZDG2&Expires=1307910775&Signature=iQ11pHtVrFS6Up171MI1%2BK3ErPo%3D
是否导致IE8为调用的文件提供文件下载通知
Software 2.1%20Beta[1].exe
我完全不知道为什么第一个'%20'被IE正确地翻译成一个空格,但第二个%20
保持原样,而扩展名被删除并且{{1附加。
删除尾随查询字符串不是一个选项(过期S3链接)。你们有什么建议来解决这个疯狂吗?我的URI编码有问题吗?
答案 0 :(得分:3)
啊哈!
通过添加非标准HTTP Content-Disposition标头解决,除了完全可憎之外,IE还使用它来覆盖任何其他自动命名因素。
Content-Disposition: attachment; filename="My Program 2.1.0 Beta.exe"
Content-Disposition采用ISO-Latin编码的文件名,即没有HTML编码废话,但从技术上讲也没有UTF8字符,这对我来说不是问题。
事实证明,您可以从AWS管理控制台的文件浏览器中指定。只希望有一些方法可以自动提供Content-Disposition标题,而不必为每个我正在服务的下载提供支持>。<
编辑:
aaaa我说得太早了。亚马逊为此添加了一项功能:http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTObjectGET.html其中一个人可以手动请求使用特定的Content-Disposition标头提供该文件,这意味着亚马逊和AWS团队确实摇滚!