Tag Archives: 403

IE默认不显示小于阈值的自定义错误页面

自这个问题产生以后,我终于理解了为什么有这么多人这么讨厌IE了:不走寻常路。标准跟别的浏览器总是格格不入,这几天遇到一个error page的问题,对于400,403,404,405,406,408,409,410,500,501,505等这些错误码,如果你自定义了错误页,IE默认情况下返回它自定义的错误页面,不会返回你定义的错误页面。 这里通过一个简单的实验来理解ie的这个行为,实验环境:apache httpd web server 2.2.22 + IE 8。

1.默认情况及其解决办法

我们自己定义的错误页面error.html:

<html>
Error Page
</html>

访问一个不存在的页面,产生404错误: 可以看到,IE并没有显示我们自己的错误页面,如果我们改变error.html里面的内容为:

<html>
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha
hahahahahahahahahahahahahahaha

Error Page
</html>

再次访问index1.html,如下图: 能够正常显示。原因就是IE处理错误页面的方式,如果你自定义的错误页面大小小于某个阈值,它将显示它自己的页面;不同的错误码,阈值不一样,一般都是256B或者512B。 这里有个表:

Code Description File Size
400 Bad Request > 512 bytes
403 Forbidden > 256 bytes
404 Not Found > 512 bytes
405 Method Not Allowed > 256 bytes
406 Not Acceptable > 512 bytes
408 Request Time-out > 512 bytes
409 Conflict > 512 bytes
410 Gone > 256 bytes
500 Internal Server Error > 512 bytes
501 Not Implemented > 512 bytes
505 HTTP Version Not Supported > 512 bytes

如果你的错误页面小于阈值,那么你可以调整IE的选项: 把图中的“显示友好http错误信息”前面的勾去掉,就能成功出现我们的错误页面了: