Пользовательская страница ошибки HTTP не отображается в Internet Explorer

Я использую страницы Tomcat 7 и JSP. Я хотел бы предоставить пользовательскую страницу ошибок для ошибок HTTP 500.

Что я сделал, так это объявил пользовательскую страницу ошибки следующим образом в web.xml:

<error-page>
  <error-code>500</error-code>
  <location>/error.jsp</location>
</error-page>

И я создал JSP под названием error.jsp со следующим кодом:

<%@ page pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html>
<html>
  <head>
    <title>500</title>
  </head>
  <body>
    <img src="${pageContext.request.contextPath}/images/500.jpg" />
  </body>
</html>

Теперь это работает в большинстве браузеров, но в Internet Explorer я попадаю на стандартную страницу «Веб-сайт не может отобразить страницу».

Почему моя пользовательская страница ошибки HTTP 500 не отображается в Internet Explorer?


person gordon613    schedule 26.01.2012    source источник


Ответы (2)


Это особенность IE. Если размер страницы с ошибкой HTTP, полученной с сервера, меньше 512 байт, IE по умолчанию будет отображать «дружественную» страницу с ошибкой, подобную той, с которой вы столкнулись, которую можно настроить, выбрав Инструменты > Свойства обозревателя > Дополнительно > Снять отметку. «Показать понятное сообщение об ошибке» в браузере. Другие (настоящие) браузеры не имеют этой функции.

Создание страницы с ошибкой HTTP чуть больше 512 байт должно обойти эту функцию IE. Вы можете добавить несколько дополнительных мета-заголовков, добавить пробелы в код с отступом, добавить дополнительную семантическую разметку в соответствии со стандартным макетом вашего сайта, добавить большой HTML-комментарий и т. д.

person BalusC    schedule 26.01.2012
comment
Да. Даже мне пришлось сделать это, чтобы решить мою проблему. Но все данные отображались правильно, кроме значка вкладки. Он показывает значок кота по умолчанию. У меня простая html-страница. Любое решение? - person Mendon Ashwini; 27.10.2017

Обнаружил, что добавление

<% response.setStatus(200); %>

на страницу JSP с ошибкой (т. е. перед HTML-тегом) решит проблему.

person Yves Blouin    schedule 19.08.2017
comment
моя проблема со значком вкладки была решена путем установки статуса ответа на 200. Спасибо - person Mendon Ashwini; 30.10.2017
comment
Таким образом, это решение для IE, не отображающего пользовательскую страницу ответа 500… состоит в том, чтобы вернуть все 500 страниц ответа как 200. Это определенно вызовет проблемы для всего, что ожидает, что значимый код состояния указывает на ошибку. - person Jeff Adamson; 17.06.2021