为什么浏览器会对同一个文件发出两个单独的请求?

7 firefox networking network-programming http

我正在调试我编写的程序并发现一些奇怪的东西.我在端口12345上设置了一个HTTP服务器,它服务于一个简单的OGG视频文件,并试图从Firefox访问它.

在嗅探网络请求时,我发现这两个请求是:

GET /video.ogv HTTP/1.1
Host: 127.0.0.1:12345
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive


GET /video.ogv HTTP/1.1
Host: 127.0.0.1:12345
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Range: bytes=8122368-
Run Code Online (Sandbox Code Playgroud)

该视频的大小几乎为8 MB,因此第二个请求具体为8122368字节(即7932 KB)这一事实表明它出于某种原因请求文件的最末端.有人有想法吗?

Sim*_*ver 8

为了支持寻找和播放尚未下载的媒体区域,Gecko使用HTTP 1.1字节范围请求从搜索目标位置检索媒体.因此,由于Ogg文件不包含其持续时间,因此终止初始下载连接.然后寻找Ogg文件的结尾并读取一些数据以提取媒体的持续时间.来自这里这里的信息.