這個問題是幾週前開始的。
每當我導航到任何頁面時http://clhs.lisp.se
- 例如這個:http://clhs.lisp.se/Body/m_w_open.htm
— 我的瀏覽器無法正常顯示該頁面,而是嘗試將該頁面下載為 HTML 檔案。
Chrome、Firefox、Brave、Vivaldi 和 Opera 中都會出現這種情況;但在 Internet Explorer 或 Edge 中則不然。它曾經在所有瀏覽器中運行良好。
為什麼會出現這種情況,如何才能使其正常運作?使用 IE 或 Edge 不是選項。
答案1
網站和/或網頁伺服器提供網頁的方式有問題。
這不是你的問題,而是伺服器端的問題;與網站本身或提供網路內容的伺服器一起。
而不是傳遞帶有標頭的內容,表明text/html
它正在傳遞application/octet-stream
Web 瀏覽器將其解釋為二進位資料的內容,然後應將其作為文件下載進行處理。查看此 Curl 命令的輸出:
curl -ILk http://clhs.lisp.se/Body/m_w_open.htm
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Accept-Ranges: bytes
Content-Length: 8896
Date: Sat, 21 Sep 2019 18:41:10 GMT
Server: lighttpd/1.4.45
我很確定你無法在客戶端修復這個問題,除非有某種插件(例如 Firefox 或 Chrome 的插件)允許你為我們的請求強制使用特定的標頭。
也就是說,該網站的核心內容可以在 Internet 上其他位置正確配置並按預期工作的網站上獲得。
除此之外,如果您只是想閱讀該網站上的內容 - 而不是調試該網站本身上的問題 - 您可以按照以下方式訪問以下其他網站上的相同內容dave_thompson_085 對問題的評論:
http://www.lispworks.com/documentation/lw50/CLHS/Front/index.htm
http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/
根據戴夫的評論,麻省理工學院的第二個連結應該具有權威性,因為「恕我直言,正確的家;當肯特在那裡工作時我就認識他了。
答案2
這個有趣的網站為您的頁面返回一個帶有以下標題的答案:
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Accept-Ranges: bytes
Content-Length: 8896
Date: Sat, 21 Sep 2019 18:44:55 GMT
Server: lighttpd/1.4.45
這裡的問題是 內容類型 字段,描述為:
應用
一些其他類型的數據,通常是未解釋的二進位數據或要由基於郵件的應用程式處理的資訊。主要子類型「八位元組流」用於未解釋的二進位資料的情況,在這種情況下,最簡單的建議操作是為使用者將資訊寫入檔案。
瀏覽器無法顯示二進位。由於「application/octet-stream」的 Content-Type 值將返回答案定義為二進位文件,因此遵守該標準的瀏覽器除了下載該文件之外沒有其他可能的操作。
IE 和 Edge 從來都不擅長遵循標準,這就是微軟目前放棄這兩者的原因。