Лучше ли перенаправить на другую страницу / документ с помощью заголовков HTTP или включить динамическое сообщение, чтобы информировать пользователей об отказе в доступе? - PullRequest
2 голосов
/ 25 августа 2009

Я хотел бы знать, как лучше всего информировать пользователя о том, что в его попытке доступа было отказано. Я понимаю, что, возможно, есть и другие варианты, но я рассматриваю следующие методы:

  1. Информирование пользователя на специальной странице «Доступ запрещен», когда мой скрипт перенаправляет его через заголовок («Местоположение:»)
  2. Информирование пользователя в сообщении на запрошенной динамической странице

Я бы хотел знать плюсы и минусы. В настоящее время я могу придумать это:

  1. Pro для перенаправления: возможно, более запутанный?
  2. Pro для сообщения на запрашиваемой странице: меньше запросов на HTTP-сервере?

Ответы [ 4 ]

4 голосов
/ 25 августа 2009

Я бы настоятельно рекомендовал не перенаправлять по той простой причине, что исходный URL больше не редактируется.

Если я сделал опечатку в URL:

http://example.com/users/jwheared

И получил перенаправление на:

http://example.com/denied

Теперь мне гораздо труднее исправить опечатку:

http://example.com/users/jwheare

Этот же принцип применим к 404 или любой другой странице ошибки. Также, если это временная ошибка сервера, перенаправление на другой URL удаляет возможность немного подождать, а затем просто обновить страницу позже.

В дополнение к этому совету, ориентированному на пользователя, страница ошибки должна сопровождаться соответствующим кодом ошибки HTTP (вероятно, 401 не авторизован, как указано в других ответах).

Рекомендуется следовать спецификации HTTP, и ни один из кодов состояния перенаправления 3xx не применим к описанной вами ситуации.

Редактировать: Еще одним важным моментом является то, что это потенциально может повлиять на производительность вашей поисковой системы. Если сканер заходит на неавторизованную страницу и получает перенаправление, он будет видеть все ваши неавторизованные страницы как одну и потенциально повысит рейтинг страницы с ошибкой. Если вы отправите правильные заголовки ошибок, то сканер, скорее всего, правильно определит этот URL как неавторизованный и просто проигнорирует его.

Сканеры часто являются тупыми клиентами, которые реализуют минимум HTTP-спецификации. Стоит думать о них так же, как о людях, использующих веб-браузер.

1 голос
/ 25 августа 2009

Не используйте перенаправление. Лучше отправьте правильный код состояния (например, 406) вместе с документом об ошибке.

1 голос
/ 25 августа 2009

Перенаправление на страницу ошибки или контроллер ошибок / действие в текущем запросе (если вы используете какую-либо MVC-структуру).

А также убедитесь, что вы отправляете правильные заголовки HTTP (код 401 - правильный для отказа в доступе), чтобы поисковый робот или аналогичный понимал происходящее.

1. Pro для перенаправления: возможно, более запутанный?

Какой смысл запутывать?

2. Pro для сообщения на запрашиваемой странице: меньше запросов на HTTP-сервере?

Почти весь ваш трафик будет использоваться для показа контента, доступ к которому запрещен. Так что я не думаю, что это причина, по которой стоит выбирать одно или другое. Это не значит, что пользователи будут использовать F5 для сайтов, к которым у них нет доступа.

EDIT: Подводя итог: это не имеет большого значения, но если вы можете попытаться не перенаправлять и убедиться, что отправлены правильные заголовки.

EDIT2: Как отметил в комментариях Джеймс Уир, перенаправление на страницу с ошибкой противоречит спецификации HTTP. Другими словами: не перенаправляйте, а печатайте ошибку непосредственно на странице, где она произошла, вместе с соответствующими заголовками.

0 голосов
/ 25 августа 2009

Какой процент неудачных попыток ввода пароля - это попытки незаконного доступа, а какой процент неверных паролей? Если это в основном первые, да, перенаправьте их на отдельную страницу HTTP, если вы думаете, что это сделает их более неудобными для них.

С другой стороны, если вы просто разместите сообщение на той же странице, вам будет намного проще ввести правильные пароли законным клиентам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...