Ответ.StatusCode и Internet Explorer - Отображать пользовательское сообщение?

StackOverflow https://stackoverflow.com/questions/50747

Вопрос

Я реализую исключение HttpRequestValidationException в моем обработчике Application_Error, и, если возможно, я хочу отобразить пользовательское сообщение.

Теперь я думаю о коде состояния.В моем текущем примере он отправляет значение 200, чего, я думаю, делать не следует.Вместо этого я хотел бы отправить (ИМХО) более подходящий запрос 400 Bad.Однако, в то же время, я хотел бы использовать Response .Напишите, чтобы ввести пользовательское сообщение.Firefox отображает это правильно, но IE7 выдает мне по умолчанию бесполезную страницу с ошибкой Internet Explorer.

С одной стороны, я предполагаю, что Internet Explorer просто предполагает, что все <> 200 - это просто отсутствие какого-либо "хорошего" контента, и RFC на самом деле не совсем понятен вот.

Поэтому мне просто интересно, является ли отправка HTTP 200 для страницы с ошибкой, вызванной HttpRequestValidationException, хорошей практикой или нет?Есть ли хорошие альтернативы?

Это было полезно?

Решение

Код ответа HTTP 200 не указывает на ошибку.Это означает, что все было в порядке.Вы не должны использовать код ответа 200 для ошибки.

Internet Explorer показывает свою страницу "Дружественных ошибок", если размер ответа составляет менее 512 байт.Вот подробнее по этому вопросу: http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,

Другие советы

Нет, это, конечно, не очень хорошая практика.Коды состояния 2XX означают (среди прочего), что запрос действителен.Что прямо противоположно возникновению исключения HttpRequestValidationException.

К сожалению, я не знаю, как заставить IE вести себя правильно.Немного лучшим способом, чем отправить 200, было бы перенаправить его на страницу с ошибкой, но он все еще далек от совершенства.

Internet Explorer показывает то, что они называют "дружественным сообщением об ошибке HTTP", когда ответ равен 4xx или 5xx.Эта опция может быть отключена пользователем в инструментах IE.Опции.Расширенный диалог [Просмотра].

Отправка 200 для страницы с ошибкой, как правило, является плохой практикой.Одной из альтернатив было бы иметь действительную страницу "Ошибки", которая предполагаемый показывать сообщения об ошибках (так что 200 будет в порядке вещей), а затем использовать перенаправление 3xx на эту страницу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top