这个问题几周前就开始了。
每当我导航到任何页面时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——允许你强制使用特定的标头来处理这样的请求。
也就是说,该网站的核心内容可以在互联网上其他配置正确且运行正常的网站上找到。
除此之外,如果您只是想阅读该网站上的内容 — — 而不是在该网站上调试问题 — — 您可以按照以下方式在以下其他网站上访问相同的内容dave_thompson_085 对此问题的评论:
http://www.lispworks.com/documentation/lw50/CLHS/Front/index.htm
http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/
并且根据 Dave 的评论,第二个 MIT 链接应具有权威性,因为“在我看来,这是正确的归宿;Kent 在那里工作时我就认识他了。”
答案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
这里的问题是 内容类型 字段,描述为:
应用
一些其他类型的数据,通常是未解释的二进制数据或由基于邮件的应用程序处理的信息。主要子类型“八位字节流”用于未解释的二进制数据,在这种情况下,最简单的建议操作是将信息写入用户的文件。
浏览器无法显示二进制文件。由于 Content-Type 值为“application/octet-stream”,将返回答案定义为二进制文件,因此遵守标准的浏览器除了下载该文件之外别无选择。
IE 和 Edge 在遵循标准方面从来都不太好,这就是微软目前放弃这两款浏览器的原因。