2009-11-04 2 views
3

Мой сервер возвращает 403 запрещенную ошибку, когда пользователь пытается получить доступ к ресурсу, к которому у них нет доступа. Наряду с заголовком сервер также пишет небольшое сообщение, описывающее ошибку.Поведение браузера на 403 Запрещенная ошибка

В Firefox сообщение об ошибке отображается хорошо, и пользователь знает, что происходит.

В Internet Explorer сообщение скрыто и заменено 403 запрещенной стандартной страницей ошибок.

Существуют ли какие-либо специальные правила, которые позволяют мне отображать сообщение об ошибке во всех браузерах, сохраняя при этом статус 403 Запрещено?

Вот информация RFC на этот статус:

Сервер понял запрос, но отказывается выполнять его. Авторизация не поможет, и запрос НЕ ДОЛЖЕН повториться. Если метод запроса не был ГОЛОВЫМ, а сервер хотел бы сообщить, почему запрос не был выполнен, то ДОЛЖЕН описать причину отказа в организации. Если сервер не желает предоставлять эту информацию , доступный клиенту, вместо этого можно указать код 404 (не найдено) .

Кажется, что я должен установить сообщение, но IE просто не отобразит его.

+1

Добавьте это к списку других вещей, которые IE просто не отобразит :) Я думаю, что лучшее, на что вы можете надеяться, это общее «уйти» –

ответ

6

Попробуйте сделать свою страницу на 403 больше (т. Е. Больше байт). Некоторые браузеры предполагают, что короткая страница ошибки является страницей по умолчанию с веб-сервера и решает показать свой собственный, по-видимому, более полезный текст.

More info.

+0

Спасибо, это правильно! В конце концов, я понял это вчера вечером. Я добавил дополнительный длинный комментарий к концу тела. Иногда IE делает меня безумным. –

0

Реализация обработки ошибок зависит от браузера. В HTTP, если вы только собираетесь вернуть ошибку 403, вы должны полагаться на пользовательский агент (техническое имя для браузера, получатель вашего сообщения об ошибке может не быть браузером), чтобы справиться с тем, как он сочтет нужным.

Если вам не нравится, как браузеры обрабатывают 403 ошибки и хотят обеспечить постоянный пользовательский интерфейс во всех браузерах, то перенаправляйте пользователя на свою собственную страницу с отказами. Вы можете создать страницу, которая может объяснить им, почему было отказано в разрешении и что они могли бы с этим сделать. И это будет согласовано для любого браузера.