Mec*_*ail 3 browser firefox google-chrome http http-status-codes
当我访问某些 HTTP URL 时,例如http://www.ssa.gov/framework/images/icons/png/
在 Firefox(在 Linux 上运行)中,我出人意料地收到“加载页面问题”浏览器错误,其中包含用于本地文件的“找不到文件”消息:
文本似乎没有意义,因为没有涉及文件。
起初我以为这可能只是 Firefox 的错误,但同样的事情发生在 Chromium 中:
当我告诉 Wget 下载它时,它会报告500 Server Error
. 但不可能是浏览器在收到 500 错误时显示“找不到文件”,因为当我访问https://httpbin.org/status/500时不会发生这种情况。
导致此错误消息的原因是什么,它是什么意思?
Mec*_*ail 14
我想我已经找到了原因。
当 Web 服务器遇到错误时,它通常会向浏览器提供一个文档(通常是描述错误的 HTML 文档),并使用 HTTP 状态代码指示错误情况。
根据这个 bug 报告,Firefox 原本总是显示返回的文档;通常这就是你想要的。但是,用户发现错误配置的 AOL 服务器存在问题:当请求不存在的 EXE 文件时,服务器将提供 404 页面,但内容类型不正确。这导致 Firefox 提供下载带有.exe
扩展名的 HTML 文档,这令人困惑,因为没有迹象表明发生了任何错误。他们通过一个简单的 hack 改变了行为(不保证编写新的错误消息页面的努力,因为这是一个不常见的情况,而是重用“未找到”页面,这在错误报告者给出的特定示例中是有意义的)。
从错误报告是@ m4573r发现,这听起来像当前的行为时,Firefox的接收与HTTP代码发出错误信号的响应,并且响应的Content-Type
是HTML以外的东西,那么火狐显示一个“未找到文件”的错误页面。
绝大多数 Web 服务器都配置为在出错时提供 HTML 文档,这就是您通常不会看到这一点的原因。但在这种极端情况下,错误消息没有意义。
wget -d http://www.ssa.gov/framework/images/icons/png/
确认这里发生了什么:
---response begin---
HTTP/1.1 500 Server Error
Server: Generic Web Server 1.0
Date: Thu, 20 Feb 2014 23:29:57 GMT
Cache-control: public
Content-type: magnus-internal/directory
Transfer-encoding: chunked
---response end---
Run Code Online (Sandbox Code Playgroud)
它的服务错误页面与虚假Content-type
的magnus-internal/directory
,引发在Firefox的行为。
显然 Google 认为这种行为是有道理的,并在 Chromium 中类似地实现了它。
归档时间: |
|
查看次数: |
12246 次 |
最近记录: |