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

时间:2009-12-14 01:37:40

标签: http firefox networking network-programming

我正在调试我编写的程序,并注意到一些奇怪的东西。我在端口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-

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

某些媒体格式在文件末尾有元数据,通常需要此数据才能正确搜索视频。

答案 2 :(得分:0)

它实际上要求8122368个字节从结尾开始向后。如果我正确地进行了计算,那么这是7.74MB。

这可能与该文件类型的缓冲完成有关。