Подтвердить что ты не робот

Как подавить "дружественные сообщения об ошибках" в Internet Explorer?

Я хочу отобразить страницу пользовательской ошибки:

<!doctype html>
<html>
<head><title>400 Bad Request</title></head>
<body><h1>400 Bad Request</h1>
The grob must be in the frobber.
</body>
</html>

К сожалению, Internet Explorer игнорирует ответ, отправленный HTTP-сервером; скрывая мою страницу и показываю ее:

Generic "This webpage cannot be found" IE error message

Как я могу убедить Internet Explorer показать страницу, на которую был отправлен пользователь?

4b9b3361

Ответ 1

Решение - PADDING.

Заметки Microsoft в статье базы знаний KB294807:

КАК: отключить Internet Explorer 5.x и 6.x "Показать сообщения об ошибках HTTP" на стороне сервера

... эти "дружественные" сообщения об ошибках отображаются только в том случае, если ответ, который отправляется клиенту, меньше или равен указанному порогу. Например, чтобы увидеть точный текст ответа HTTP 500, длина содержимого должна быть больше 512 байтов.

Внедрить это дополнение.. Чтобы сделать это, используйте функцию VBScript String, чтобы вернуть строку того же символа, которая является еще одной ошибкой ErrorThreshold, которую использует Internet Explorer 5.x для отображения дружественных сообщение об ошибке. Например, добавьте следующую строку непосредственно перед тегом 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 "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 байт