0

ユーザーが SAS を使用して Windows Azure ストレージ プールからファイルをダウンロードできるようにします (このディスカッションを参照)。SAS が構築され、次にRequest.Redirect(targetURL)クライアントのブラウザをリダイレクトしてファイルをダウンロードするために が呼び出されます。

これは、Chrome を使用してファイル (拡張子 .dp で終わる独自のバイナリ ファイル) をダウンロードすることでうまく機能します。

ただし、Internet Explorer 9 で (同じ URL を使用して) 同じファイルをダウンロードすると、ファイルの拡張子が .zip に変更されます (元の .dp が削除されます)。まだ IE9 を使用しているユーザーもいます :(

ブロブのコンテンツタイプを確認しましたapplication/octet-stream(したがって、正しいはずです)。

IE9 がファイルの拡張子を変更するのはなぜですか? また、これを防ぐにはどうすればよいですか? Azure に .dp ファイルをそのまま (MIME タイプに関して) 残すように指示する必要がありますか? その場合、どのように構成できますか?

編集:ウェブサーバーへの追加の負荷を避けるために、blob.openread()/response.write() ではなくリダイレ​​クトを使用したいと本当に思っています。

更新 1

Fiddler を使用して、ダウンロード リクエストに対するサーバーの応答を確認しました。コンテンツ タイプが正しいことは明らかです。

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

サーバーのコンテンツ ペイロードは

PK����nAQ������p����

* FIDDLER: RawDisplay が 128 文字で切り捨てられました。切り捨てを無効にするには、右クリックします。*

IE は「PK」を PKZIP と解釈し、それが ZIP ファイルであると認識しますか?

これを無効にするにはどうすればよいですか (クライアント側で) - cf. 以下の最初のコメントはトリックではありませんでした...

敬具、

ロビー・デ・サッター

4

2 に答える 2

1

&ext=.exe のようなクエリ文字列パラメーターを末尾に追加することで、IE を騙すことができます。

.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 は実際には実行可能ファイルであり、ファイル拡張子なしで保存します。しかし、私がそうするなら: 2015-05-18T19%3A46%3A42Z&sp=r&ext=.exe (末尾に &ext=.exe を追加) IE でファイルが適切に保存されるようになりました。

于 2015-05-18T19:49:59.503 に答える
1

これは IE が迷惑なことをしているだけだと思います。コンテンツ タイプを のようなものに変更することをお勧めしますapplication/x-foobar。おそらく「foobar」をより意味のあるものに置き換えてください。:-)

私はそれをテストしていませんが、IE がファイルの種類を推測しようとするのをやめるには十分だと思います。

于 2012-08-17T23:30:28.200 に答える