Sod*_*hty 28 browser html compatibility http
这个问题几周前就开始了。
每当我导航到任何页面时http://clhs.lisp.se- 例如这个:http://clhs.lisp.se/Body/m_w_open.htm- 我的浏览器不会正常显示该页面,而是尝试将该页面下载为 HTML 文件。
这发生在 Chrome、Firefox、Brave、Vivaldi 和 Opera 中;但不在 Internet Explorer 或 Edge 中。它曾经在所有浏览器中都能正常工作。
为什么会发生,我怎样才能让它正常工作?使用 IE 或 Edge 不是一种选择。
Gia*_*968 53
这不是您的问题,而是服务器端的一些奇怪问题;与网站本身或服务器提供 Web 内容。
而不是交付带有标头的内容,表明text/html它正在交付application/octet-streamWeb 浏览器将其解释为二进制数据的内容,然后应将其作为文件下载进行处理。看看这个 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
Run Code Online (Sandbox Code Playgroud)
我很确定你不能在客户端解决这个问题,除非有某种插件 - 例如对于 Firefox 或 Chrome - 这将允许你为我们这样的请求强制特定标头。
在那之后,如果您只是想阅读该站点上的内容——而不是调试该站点本身的问题——您可以根据dave_thompson_085 对问题的评论在以下其他站点访问相同的内容:
http://www.lispworks.com/documentation/lw50/CLHS/Front/index.htmhttp://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/根据戴夫的评论,麻省理工学院的第二个链接应该是权威的,因为“恕我直言,正确的家;肯特在那里工作时,我就认识他。”
har*_*ymc 10
这个有趣的网站为您的页面返回一个带有以下标题的答案:
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
Run Code Online (Sandbox Code Playgroud)
这里的问题是 Content-Type 字段,描述为:
应用
一些其他类型的数据,通常是未解释的二进制数据或要由基于邮件的应用程序处理的信息。主要子类型“八位字节流”将用于未解释的二进制数据的情况,在这种情况下,最简单的推荐操作是为用户提供将信息写入文件。
浏览器无法显示二进制文件。由于“application/octet-stream”的 Content-Type 值将返回答案定义为二进制文件,因此遵守该标准的浏览器除了下载文件之外别无其他可能的操作。
IE 和 Edge 从来都不擅长遵循标准,这就是微软目前放弃两者的原因。