解决办法是PADDING。
Microsoft 在知识库文章KB294807中指出:
如何:关闭服务器端的 Internet Explorer 5.x 和 6.x“显示友好的 HTTP 错误消息”功能
...这些“友好”错误消息仅在发送到客户端的响应小于或等于指定阈值时才会显示。例如,要查看 HTTP 500 响应的确切文本,内容长度必须大于 512 字节。
实现这个填充。为此,请使用 VBScript 字符串函数返回相同字符的字符串,该字符串比 Internet Explorer 5.x 用于显示友好错误消息的 ErrorThreshold 多一个。例如,在 500-100.asp 的标记之前添加以下行:
<% Response.Write String(513, "_") %>
让它更大
所以我将响应页面扩大到:
<!doctype html>
<html>
<head><title>400 Bad Request</title></head>
<body><h1>400 Bad Request</h1>
The grob must be in the frobber.
<!--
512 bytes of padding to suppress Internet Explorer's "Friendly error messages"
From: HOW TO: Turn Off the Internet Explorer 5.x and 6.x "Show Friendly HTTP Error Messages" Feature on the Server Side
http://support.microsoft.com/kb/294807
Several frequently-seen status codes have "friendly" error messages
that Internet Explorer 5.x displays and that effectively mask the
actual text message that the server sends.
However, these \"friendly\" error messages are only displayed if the
response that is sent to the client is less than or equal to a
specified threshold.
For example, to see the exact text of an HTTP 500 response,
the content length must be greater than 512 bytes.
-->
</body>
</html>
问题解决了。
奖金阅读
是什么让 IE 决定显示友好的错误页面?
答案是服务器的响应必须满足两个条件:
- HTTP 状态码必须为[400, 403, 404, 405, 406, 408, 409, 410, 500, 501, 505]
- HTTP 响应正文的字节长度必须小于阈值
字节长度阈值存储在注册表中 HKEY_LOCAL_MACHINE 的子项 \SOFTWARE\Microsoft\Internet Explorer\Main\ErrorThresholds 下。
- [403、405、410]: 256 字节
- [400、404、406、408、409、500、501、505]: 512字节
- 否则:512 字节