2009-11-30 121 views
11

在瀏覽器中顯示PDF時,大部分瀏覽器(IE,FF,Safari,Chrome,Opera)是否對PDF文件發出多個HTTP請求?我正在研究與WebTrends Web Analytics軟件集成的問題,並且圍繞PDF的統計信息似乎不正確。支持人員告訴我,由於WebTrends解析Web服務器訪問日誌以確定流量,下載等,因此確定準確的PDF下載有困難,因爲:
當用戶單擊PDF並在用戶瀏覽器中通過Acrobat Reader瀏覽器插件,每個頁面一次下載 - 這樣做是爲了節省帶寬,如果用戶只查看50頁PDF的前2頁,則只下載前2頁。我發現HTTP請求只能提供二進制文件的一部分嗎?) - 我一直在搜索谷歌,但還沒有發現任何可以說明這一點的東西。在瀏覽器中顯示PDF時,大多數瀏覽器是否發出多個HTTP請求

我會嘗試找到一些IE軟件,讓我明天嗅探HTTP流量,看看我是否可以觀察到這種現象。

任何信息/想法,但讚賞雖然。

+1

不是這樣的答案,但http支持通過內容範圍標題下載部分文件。也許PDF使用它... *聳聳肩* – Will 2009-11-30 03:52:21

+2

我發現提琴非常方便這種IP數據包嗅探。 – 2009-11-30 04:09:03

+0

參見[RFC 2616,第3.12節](http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.3.12)。 – 2009-11-30 09:04:41

回答

13

如果您的網站返回的HTTP響應頭是這樣的:

Accept-Ranges: bytes 

PDF閱讀器將關閉閱讀只是幾KB的文件後,初使連接。然後請求與所述範圍請求報頭所需的,該文檔的部分例如爲:

Range: bytes=242107-244329, 8060-76128 

,這是否是一個http://www.ovationguitars.com/img/OVmanual.pdf URL的一個例子。

如果你不回的Accept-範圍頭,然後PDF文檔將在一個請求(例如http://manuals.info.apple.com/en/iphone_user_guide.pdf

您可以看到使用HttpWatch在IE瀏覽器PDF閱讀器的行爲進行下載。

**免責聲明:本答案被張貼SIMTEC有限公司,HttpWatch的**

+0

非常有趣的謝謝你!所以看起來這是可能的,但是經過進一步調查(觀看HTTPRequests/Respsonses)之後,似乎Adobe IE瀏覽器的Adobe Acrobat Reader插件不支持以這種方式創建請求(並且可能也不是提供PDF的Web應用程序,儘管我還沒有發送任何合成請求的字節範圍) – empire29 2009-12-01 14:36:22

+0

我檢查了iPhone中的iphone_user_guide.pdf(https://manuals.info.apple.com/MANUALS/1000/MA1565/en_US/iphone_user_guide.pdf),我得到了2個請求:第一個是好的。第二個被取消。 – 2016-05-23 11:31:09

+0

今天我仍然看到這種行爲,而提琴手顯示沒有涉及「接受範圍」標頭。 – 2016-06-02 18:25:37

0

我的想法是,您的發現是:您的插件無法(也不應該)將PDF分成請求。

我有一個Web應用程序,它從請求(單個請求)提供PDF文件並顯示在插件中。它顯示整個PDF而不會獲得更多信息。

另外,如果你正在尋找一個HTTP嗅探器,你可以嘗試Fiddler。我發現這在網站調試中很有用。

+0

我使用IE(公司官方「支持」瀏覽器)和最新的Adobe Acrobat閱讀器插件在HTTPWatch中檢查出它,並且它正在下拉整個PDF。 我沒有看到有關字節範圍的標題中的任何內容。 – empire29 2009-12-01 14:34:09

2

,我作爲2016年6月的製造商,Firefox和IE11只打一個電話,。

如果沒有Content-Disposition標題,Chrome會發出兩個呼叫。如果缺失,Chrome會執行兩次GET,似乎取消第二個GET,並在瀏覽器中顯示PDF。服務器不知道第二個被取消,並再次發送PDF。

從服務器發送此標頭時,Chrome只會發出一個呼叫並啓動或保存該文件。

Content-Disposition: attachment 

(您也可以建議的文件名時,用戶保存的文件中使用...)

Content-Disposition: attachment; filename=test.pdf 
+1

添加此標頭確實會阻止第二次調用,但它也會導致Chrome像附件一樣下載PDF,而不會立即打開它在瀏覽器內。 – kman 2016-06-04 21:19:30

+0

是的。我仍然認爲這是一個錯誤,但這是一個方法。 – 2016-06-05 04:13:17

+2

那麼問題是Chrome的PDF插件。使用Content-Disposition:不使用PDF插件。這就是爲什麼沒有錯誤。更多細節在這裏:https://bugs.chromium.org/p/chromium/issues/detail?id=587709 – 2016-06-15 15:59:41

0

在我的測試中,雙請求到一個PDF occours在Chrome中,如果我有REST控制檯4.0.2擴展啓用。禁用此擴展程序會使Chrome按預期工作(只有一個請求)。

編輯:啓用Instapaper擴展也使得Chrome對PDF執行雙重請求。