4

至少在 IE 9 上,浏览器偶尔会决定不显示它由网络浏览器提供的实体主体,而是显示它自己的自定义页面。它似乎对某些错误执行此操作,例如 403、404、500 等。

但是,有时它显示服务器发送的实体主体。

它使用什么条件来确定是否显示响应?

我做了什么:我构建了一个小型网络服务器,它通过查询字符串接受关于要返回什么代码的参数,并返回(状态代码为code):

<!DOCTYPE html>
<html>
<head></head>
<body>
<h1>Response {code}</h1>
Hi. I'm an <em>HTML document</em>. I should be the response of a code {code}.
</body></html>

我通过/my-page?code=400,/my-page?code=500等来调用它。有时我得到页面,有时我没有。Chrome 验证正在发送状态代码。(并显示页面。)

4

1 回答 1

3

这显然是被设计破坏的。条件:

  • 错误是 [400, 403, 404, 405, 406, 408, 409, 410, 500, 501, 505] 之一
  • 实体主体的字节大小小于指定的阈值HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\ErrorThresholds

还要注意默认值:

响应代码 [403, 405, 410] 的默认阈值为 256 字节,响应代码 [400, 404, 406, 408, 409, 500, 501, 505] 的默认阈值为 512 字节。如果其中一个状态代码缺少注册表项,则其阈值默认为 512 字节。

http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx

于 2013-05-24T18:10:02.710 回答