HTMLdownload屬性

HTMLdownload屬性

我正在嘗試查看在線找到的 Pdf 文件。

通常,當我嘗試開啟 Pdf 檔案時,Firefox 會在其預設 Pdf 檢視器(我相信稱為 pdfjs)中顯示它。這是良好且正常的行為。

然而……
對於我在網上找到的這個特定的 Pdf,我單擊其位置的鏈接,Firefox 會彈出下載對話框。它將文件描述為“二進製文件”,儘管該文件是我可以本地下載和查看的 Pdf。

我假設網頁伺服器是“不告訴」 Firefox 認為這個 Pdf 檔案實際上是一個 Pdf 檔案。因此 Firefox 只能假設它是一個「二進位檔案」。

          這促使我想知道這個問題...

如果我再次遇到這種煩惱,我可以不下載該檔案嗎?力量Firefox 在其預設 Pdf 檢視器中開啟檔案(線上或其他方式)?

嘗試過的解決方案:

  1. 我嘗試了來自的答案如何手動呼叫firefox內建pdf檢視器(pdf.js)?,但無濟於事。 Firefox 只是嘗試下載“二進位”。
  2. 我添加view-source:到 Pdf 位置的開頭(即view-source:https://www.website.com/pdf.pdf),我只是獲取 Pdf 文件顯示的原始 ASCII 文字。

PS:我使用的是 Firefox 48.0.2 ...
是的,它很舊......


按照要求:

回應和請求標頭的螢幕截圖

答案1

網站可以透過多種方式強制瀏覽器下載檔案而不是直接開啟檔案:

HTMLdownload屬性

標籤上的此屬性anchor將嘗試強制您的瀏覽器下載文件,而不是按照通常的方式處理文件。

通常,當您需要自動產生的文件名稱並將其呈現為對使用者有利的內容時,請使用此方法。

用法:<a href="http://www.website.com/path/to/YourDocument.pdf" download="YourDocument.pdf">...

我還沒有找到解決這個問題的方法,但由於你的問題的真正原因如下,我還沒有完全研究它...

HTTP 標頭

Content-Disposition

網路伺服器可以回應帶有標頭的文件請求,Content-Disposition以描述瀏覽器應如何接收文件。

Content-Disposition: Attachment會告訴瀏覽器應該下載該文件,而不是像平常那樣處理它。

Content-Disposition: Inline會告訴瀏覽器它可以顯示在網頁內部,或是作為網頁顯示。

這是一個 Firefox 插件,它將獲取Attachment標頭並用標頭替換它們Inline

https://addons.mozilla.org/en-US/firefox/addon/bypass-forced-download/

從技術上講,它攔截Content-Disposition: attachmentheaders 並將它們即時重寫為Content-Disposition: inline.它還允許您指定應該和不應該使用此重寫的網站。

與大多數插件一樣,您的里程可能會有所不同。

Content-Type

網路伺服器可以回應帶有標頭的文件請求,Content-Type以描述傳回給瀏覽器的文件類型。

Content-Type: application/octet-stream被定義為“任意二進位資料”,基本上只能作為檔案下載,否則瀏覽器將不知道如何處理它。

這是當您的瀏覽器要求您嘗試查看的 PDF 文件時您會看到的內容。

Content-Type: application/pdf如果您想在瀏覽器中查看此文件,或至少讓 Firefox 了解該文件是什麼以及如何正確處理它,您可能需要此文件。

這是一個 Firefox 插件,可以設定為偵聽並Content-Type根據內容重寫標頭。

筆記: 修改瀏覽器處理 MIME 類型的方式可能很危險。

https://addons.mozilla.org/en-US/firefox/addon/content-type-fixer/

同樣,這個插件可能適用於所有情況,也可能不適用於所有情況。

相關內容