2012-08-17 42 views
0

我允许用户使用SAS从Windows Azure存储池下载文件(参见this discussion)。 SAS正在构建中,接下来调用Request.Redirect(targetURL)来重定向客户端的浏览器以下载文件。IE9上的Azure存储下载将文件扩展名更改为ZIP

这可以很好地使用Chrome下载文件(以扩展名.dp结尾的专有二进制文件)。

但是,当在Internet Explorer 9上下载相同的文件(使用相同的URL)时,文件的扩展名将被更改为.zip(删除原始.dp)....某些用户仍然使用IE9: (

我检查内容类型的斑点,这是application/octet-stream(因此应该是正确的)。

为什么IE9更改文件的进一步扩展,我能做些什么来防止这种情况? 我需要指示Azure按原样离开.dp文件吗(如果是这样),如果可以,我该如何配置?

编辑:我真的想使用重定向,而不是blob.openread()/ response.write(),以避免额外的网络服务器负载。

更新1

我已经使用小提琴手看到的下载请求的服务器的答案,很显然,内容类型是正确的:

HTTP/1.1 200 OK 
Content-Length: 60783 
Content-Type: application/octet-stream 
Last-Modified: Fri, 17 Aug 2012 13:25:24 GMT 
ETag: 0x8CF4XXXE4DD2184 
Server: Blob Service Version 1.0 Microsoft-HTTPAPI/2.0 
x-ms-request-id: 21XXXXX-9e42-4ca8-a425-e84269d9f104 
Date: Fri, 17 Aug 2012 16:49:05 GMT 

的内容有效载荷在服务器启动

PKnAQp

* FIDDLER:RawDisplay截断为128个字符。右键单击以禁用截断。 *

IE是否将PK解释为PKZIP,因此认为它是ZIP文件?

这怎么可以禁用(在客户端) - 比较。下面的第一个评论是不招...

亲切的问候,

罗比·德·苏特尔

+0

IE9之前有一个IE安全设置“打开基于内容的文件,而不是文件扩展名”,默认为true,并导致此行为。该设置不在IE9/IE10中,但有启用MIME嗅探 - 我设置为禁用,认为它可能会有所需的效果,但它并没有改变我的这种行为。也许是领导呢? – 2012-08-17 15:15:18

+0

感谢您的反馈。我确实找到了设置,但禁用它们并没有解决问题。不幸的是,我现在认为这是一个客户端问题,因为在从服务器回来的响应中,内容类型是正确的...(参考更新1) – Robbie 2012-08-17 16:51:44

回答

1

我怀疑这只是IE做一些烦人。我建议将内容类型改为application/x-foobar,或许用更有意义的替代“foobar”。 :-)

我还没有测试过,但我认为这足以让IE停止尝试猜测文件类型。

+0

解决了它...谢谢 – Robbie 2012-08-18 06:27:37

1

您可以通过在最后添加查询字符串参数来欺骗IE,如:& ext = .exe。

我们生成一个链接到.exe + sas令牌。所以,链接可以在短时间内访问。 IE无法找出该文件https://.blob.core.windows.net/container/file.exe?sv = 2014-02-14 & sr = b & sig = 1oRgEzi%2F5uXCPUiseHizadfadfasdfa0vEs%3D & st = 2015 -05-18T19%3A36%3A42Z & se = 2015-05-18T19%3A46%3A42Z & sp = r实际上是一个可执行文件并将其保存为没有文件扩展名。但如果我这样做: https://.blob.core.windows.net/container/file.exe?sv = 2014-02-14 & sr = b & sig = 1oRgEzi%2F5uXCPUiseHizadfadfasdfa0vEs%3D & st = 2015-05 -18T19%3A36%3A42Z & se = 2015-05-18T19%3A46%3A42Z & sp = r & ext = .exe(在末尾添加& ext = .exe)IE现在可以适当地保存该文件。