我正在使用 Sails.js 将 GridFS 集合的 mp4 文件流式传输给我的访问者。Chrome 和 Firefox 运行良好,但 Safari 以 Apple 的方式运行 - 或者换句话说 - 它不在那里运行。我只收到消息“加载资源失败”。
对于一些研究,我刚刚将 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 需要哪些信息才能使其正常工作吗?
// 编辑:在响应字节范围标头后,我现在可以看到我的视频,但是当我打开视频时,Safari 现在会发出一些非常奇怪的请求。这是我记录的一个视频文件的字节范围请求:
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