2017-05-01 55 views
2

Node.jsの標準httpモジュールの上にWebサーバーがあります。あらゆる種類のHTML、JavaScript、CSS、およびアセットコンテンツに対応するために私の時計のように機能していました。私のウェブページの大部分を自然に占めています。iOSのSafariは `application/octet-stream`コンテンツのダウンロードを拒否していますか?

拡張子が不明なファイル(MIMEスニッフィングが実行されていない)にマッピングされたURLをサービスに要求すると、チャンクされた転送エンコーディングのヘッダーがContent-Type: application/octet-streamであるコンテンツを提供するだけでなく、 - ときどきサーバ上のすべての種類のファイルをホストし、ユーザエージェントからの干渉なしにこれらをダウンロードできます。これは、application/octet-streamの処理から期待しています。

しかし、今日、私はiPhone 4S上のiOS 9.3.5で実行しているのSafariモバイルブラウザにダウンロードしようとした、そしてその事は単なるで私を警告、有効なURLからダウンロードすることを拒否:

ダウンロードに失敗しました。 Safariはこのファイルをダウンロードできません。

これまでのところ、Content-Disposition: attachmentContent-Disposition: attachment; filename="foobar"を追加しようとしましたが、まだ拒否しています。

これは、randomという名前のファイルで、1000個のランダムなバイトで満たされています。 (上記の言ったように、Content-Dispositionはオプションです)私のホストヘッダーは、次のとおりです。(私のWindows 10 x86_64のホスト上のFirefox 53に加えて)予想通り

レコードの
HTTP/1.1 200 OK 
Host: example.com 
Content-Type: application/octet-stream 
Content-Disposition: attachment; filename="foobar" 
Date: Mon, 01 May 2017 13:48:37 GMT 
Connection: keep-alive 
Transfer-Encoding: chunked 

、Androidの6.xの電話はまたからのダウンロード、振る舞いヒッチのないURL。

ここでSafariでは何が起こっていますか?

答えて

3

はい、iOSのSafariでダウンロードできるのは画像のみです。これは、iOSがユーザーにファイル構造を公開していないため(ユーザーが決して見ることのできないどこかのファイルをダウンロードすることは意味をなさない)、アンチウェブ攻撃とは何の関係もないからです。 Androidのファイル構造がユーザーに表示されるため、Androidのブラウザは任意のファイルをダウンロードできます。ここで

は、Appleのコミュニティに以前の議論である:https://discussions.apple.com/thread/3697948?start=0&tstart=0

あなたはサファリから、iPhoneに保存することができる唯一のことは、写真です。他に何もダウンロードされていません。

今後iOS対応のビデオファイルをダウンロードすることは可能ですが、application/octet-stream MIMEタイプの任意のファイルでは可能性は低いです。

+0

ありがとう、ちょうど私が知りたいと思っていた。 – amn

関連する問題