大多数浏览器在浏览器中显示PDF时会发出多个HTTP请求

时间:2009-11-30 03:47:13

标签: http pdf

在浏览器中显示PDF时,大多数(IE,FF,Safari,Chrome,Opera)是否为PDF文件生成多个HTTP请求?我正在研究与WebTrends Web Analytics软件集成的问题,并且围绕PDF的统计数据似乎不正确。支持人员告诉我,因为WebTrends解析Web服务器访问日志以确定流量,下载等,所以很难确定准确的PDF下载,因为: 当用户点击PDF并通过Acrobat Reader浏览器插件在用户浏览器中打开PDF时,每个页面一次一个地下载 - 如果用户仅查看,则执行此操作以节省带宽50页PDF的前2页,只下载前2页。

这对我来说听起来很可疑(如何将HTTP请求仅用于提供二进制文件的一部分?) - 我一直在搜索谷歌,但没有发现任何与此有关的内容。

我会尝试找一些IE软件让我明天嗅一下HTTP流量,看看能否观察到这种现象。

但是,任何信息/想法都会受到赞赏。

4 个答案:

答案 0 :(得分:13)

如果您的网站返回如下的HTTP响应标头:

Accept-Ranges: bytes

PDF阅读器将在读取几KB文档后关闭初始连接。然后,它根据需要使用Range请求标头请求文档的各个部分,例如:

Range: bytes=242107-244329, 8060-76128

执行此操作的网址示例为http://www.ovationguitars.com/img/OVmanual.pdf

如果您不返回Accept-Ranges标题,则PDF文档将在单个请求中下载(例如http://manuals.info.apple.com/en/iphone_user_guide.pdf

您可以使用HttpWatch在IE中查看PDF阅读器的行为。

**免责声明:此答案由HttpWatch的制造商Simtec Limited发布**

答案 1 :(得分:2)

对于我来说,截至2016年6月,Firefox和IE11只拨打一个电话。

如果没有Content-Disposition标头,Chrome会拨打两个电话。如果缺少,Chrome会执行两次GET,似乎取消第二次,并在浏览器中显示PDF。服务器不知道第二个被取消,并再次发送PDF。

当从服务器发送此标头时,Chrome只会拨打一个电话并启动或保存该文件。

Content-Disposition: attachment

(您还可以建议用户保存文件时使用的文件名...)

Content-Disposition: attachment; filename=test.pdf

答案 2 :(得分:0)

我的想法是你的位置:你的插件不能(也不应该)将PDF分成请求。

我有一个Web应用程序,它根据请求(单个请求)提供PDF文件并显示在插件中。它显示整个PDF而不会获得任何更多信息。

另外,如果您正在寻找HTTP嗅探器,可以试试Fiddler。我发现在网站调试过程中这很有用。

答案 3 :(得分:0)

在我的测试中,如果启用了REST控制台4.0.2扩展,则Chrome中的双重请求会在Chrome中出现。停用此扩展程序可使Chrome按预期工作(只有一个请求)。

编辑:启用Instapaper扩展程序也会让Chrome对PDF进行双重请求。