Apache 有沒有辦法停用位元組範圍請求?

Apache 有沒有辦法停用位元組範圍請求?

我有一個網頁,其中包含 PDF 文件的連結 ( target="_blank")。如果我點擊該鏈接,PDF 閱讀器只會在 Firefox 瀏覽器中顯示灰色螢幕。

如果我複製該連結並在新分頁中手動開啟它,PDF 將正確顯示,並且透過點擊原始連結發出的後續請求現在可以工作,這表示將文件載入至快取時出現問題。

Adobe PDF 閱讀器外掛似乎正在發出字節範圍請求(我看到很多 206 回應),我懷疑這可能是問題的原因。

我正在運行 Apache 網路伺服器。有人對 Apache 和 Adob​​e 的位元組範圍請求有問題嗎?有什麼解決方法嗎?也許有一種配置 Apache 來忽略 PDF 上的位元組範圍請求的方法?

答案1

httpd 郵件清單上提出並回答如何停用請求的問題:

如何停用接受範圍?

接受位元組範圍請求的來源伺服器可以發送

      Accept-Ranges: bytes

  Servers that do not accept any kind of range request for a
  resource MAY send

      Accept-Ranges: none

如果您找不到更直接的方法,您始終可以使用 mod_headers 來刪除或變更回應標頭。

-> 請參閱 mod_headers 的 apache 文檔,以了解如何將 Accept-Ranges 標頭設為 none

http://mail-archives.apache.org/mod_mbox/httpd-users/200912.mbox/%[電子郵件受保護]%3E

答案2

查看 PDF 時,此問題有時會在 Acrobat Reader 中產生錯誤 109。

若要透過 htaccess 檔案停用位元組範圍請求:

# Disable Byte-range for PDF files
<Files *.pdf>
    Header set Accept-Ranges none 
</Files>

答案3

中間有魷魚嗎?這是 Adob​​e 外掛程式的常見問題 - 它嘗試取得 PDF 的末尾(目錄),Squid 開始下載整個文件,Adobe 逾時並顯示空白頁面。

教自己「右鍵單擊,另存為」—PDF 不是 Web 文檔,不應在瀏覽器中查看。

相關內容