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

Http 为什么浏览器会对同一个文件发出两个单独的请求?,http,firefox,networking,network-programming,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/

我正在调试一个我写的程序,发现了一些奇怪的东西。我在端口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-

视频大小几乎为8MB,因此第二个请求指定了8122368字节,即7932KB,这表明出于某种原因,它正在请求文件的结尾。有人有想法吗?

实际上是从末尾向后请求8122368字节。如果我的计算正确的话,这是7.74MB


这可能与该文件类型的缓冲方式有关。

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

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

我喜欢指向您本地主机地址的链接。有趣,但没那么有用。让我们看看有多少人报告它是一个断开的链接:-)对不起,我知道它没有用,我只是不假思索地写了它。它已被删除。不,它正在请求从8122368到结尾的字节,即文件大小为8122368字节。请参阅:Ogg文件没有其持续时间,因此浏览器使用此技术来查找。