Google Chrome 中的部分内容请求

Partial content request in Google Chrome

有很多关于 Chrome 的部分内容问题的帖子。但我真的被困住了,到目前为止任何建议都对我没有帮助。这是我的问题:

环境:

  1. 在服务器端使用 MongoDB 的 Node 和存储在 mongo 中的文件。我 使用 GridFS 获取文件并发送给客户端。
  2. 我使用 Nginx 作为网络服务器

我有一个标签,需要在客户端循环播放视频。我发现,Chrome 正在向服务器发送范围请求:

GET /54c4d7c6849b10b54af4ac23.mp4 HTTP/1.1
Host: xxxx.com
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
Accept: */*
Referer: https://www.xxxx.com/en-GB/
Accept-Language: en-US,en;q=0.8
Cookie: _ga=GA1.2.1593613130.1422274087
Range: bytes=26104-3116024

这个请求我在gridFS处理,部分内容回复如下:

HTTP/1.1 206 Partial Content
Server: nginx/1.6.2
Date: Mon, 23 Feb 2015 13:47:48 GMT
Content-Type: video/mp4
Content-Length: 3089921
Connection: keep-alive
Content-Range: bytes 26104-3116024/3116025
Accept-Ranges: bytes
Cache-Control: no-cache

但在那之后 Chrome 停止显示视频。那里出了什么问题? 我可能会错过一些回复 header 吗?

问题已解决 不幸的是 Chrome 在 request/response 中发生的事情不是很详细。问题是尺寸实际上很重要。当 Header 中声明的大小与实际内容大小不同时。 chrome 无故放弃。为了识别这一点,我设置了 Fiddler 并发现我的 gridFS 发送了错误的文件部分大小。将 Gridfs 升级到最新的 1.0.1 版本确实解决了这个问题。