【问题标题】:Why would a browser make two separate requests for the same file?为什么浏览器会对同一个文件发出两个单独的请求?
【发布时间】:2009-12-14 01:37:40
【问题描述】:

我正在调试我编写的程序并注意到一些奇怪的东西。我在端口 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,这表明它出于某种原因请求文件的最后。有人有想法吗?

【问题讨论】:

  • 我喜欢你的本地主机地址的链接。有趣,但没那么有用。让我们看看有多少人将其报告为断开的链接:-)
  • 对不起,我知道它没有用,我只是不假思索地写了它。它已被删除。

标签: http firefox networking network-programming


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Ogg 文件没有它们的持续时间,因此浏览器使用这种技术来找出它。
    【解决方案3】:

    它实际上从末尾开始向后请求 8122368 个字节。如果我的计算正确,则为 7.74MB。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2014-05-14
    相关资源
    最近更新 更多