2012-08-17 46 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現在可以適當地保存該文件。