Sails.js を使用して、GridFS コレクションの mp4 ファイルを訪問者にストリーミングしています。Chrome と Firefox は問題なく動作していますが、Safari は Apple のやり方で動作します。つまり、Safari では動作しません。「リソースの読み込みに失敗しました」というメッセージしか表示されません。
いくつかの調査のために、GridFS ストリームをファイルに書き込み、これを Sails.js アセット フォルダーに移動して、すべてのブラウザーで直接呼び出すようにしました。これはSafariでも問題なく動作します。Sails.js は "Transfer-Encoding:chunked" を使用しているため、ファイルをストリーミングするときに問題が発生するはずです。
これは、さまざまなヘッダー応答です。
mp4 ファイル (/test/myvideo.mp4) への直接リクエスト - すべてのブラウザーで動作します。
Accept-Ranges:bytes
Access-Control-Allow-Credentials:
Access-Control-Allow-Headers:
Access-Control-Allow-Methods:
Access-Control-Allow-Origin:
Cache-Control:public, max-age=0
Connection:keep-alive
Content-Length:28245
Content-Range:bytes 0-28244/28245
Content-Type:video/mp4
Date:Tue, 01 Dec 2015 13:38:03 GMT
ETag:W/"7dkKPef1hD8oj01oYkP4vw=="
Last-Modified:Tue, 01 Dec 2015 13:37:20 GMT
X-Powered-By:Sails <sailsjs.org>
GridFS ストリーム (/videos/files/sdrrer545547568fdsdf3.mp4) へのリクエスト - Safari では機能しません
Access-Control-Allow-Credentials:
Access-Control-Allow-Headers:
Access-Control-Allow-Methods:
Access-Control-Allow-Origin:
Connection:keep-alive
Content-Type:video/mp4
Date:Tue, 01 Dec 2015 14:01:58 GMT
Transfer-Encoding:chunked
X-Powered-By:Sails <sailsjs.org>
Safari を機能させるために必要な情報を知っている人はいますか?
// 編集: Byte-Range ヘッダーで応答した後、ビデオを表示できるようになりましたが、ビデオを開くと、Safari が非常に奇妙な要求を行うようになりました。以下は、1 つのビデオ ファイルに対してログに記録された Byte-Range リクエストです。
undefined
bytes=0-1
bytes=0-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855
bytes=285855-285855