Когда пользователь не вошел в систему и пытается получить доступ к странице, требующей входа в систему, какой правильный код состояния HTTP для перенаправления на страницу входа?
10.3.1 300 множественных вариантов выбора
Запрашиваемый ресурс соответствует
любой из набора представлений,
каждый со своим конкретным местоположением,
и агентские переговоры
информация (раздел 12) в настоящее время
при условии, что пользователь (или пользователь
агент) может выбрать предпочтительный
представление и перенаправить его
запрос к этому месту.
Если это не запрос HEAD,
ответ ДОЛЖЕН включать субъект
содержащий список ресурсов
характеристики и местоположение (я) от
который может пользователь или пользовательский агент
выберите наиболее подходящий.
Формат объекта определяется
тип медиа, указанный в Content-Type
поле заголовка В зависимости от
формат и возможности
пользовательский агент, выбор наиболее
соответствующий выбор МОЖЕТ быть выполнен
автоматически. Тем не менее, это
спецификация не определяет
стандарт для такого автоматического выбора.
Если сервер имеет предпочтительный выбор
представления, он должен включать
конкретный URI для этого
представление в поле Location;
пользовательские агенты МОГУТ использовать поле Location
значение для автоматического перенаправления. это
ответ кэшируется, если не указано
в противном случае.
10.3.2 301 постоянно перемещено
Запрошенный ресурс был
назначен новый постоянный URI и любой
будущие ссылки на этот ресурс
ДОЛЖЕН использовать один из возвращенных URI.
Клиенты с возможностью редактирования ссылок
должен автоматически повторно связать
ссылки на Request-URI на один
или больше возвращенных новых ссылок
на сервере, где это возможно. это
ответ кэшируется, если не указано
в противном случае.
ДОЛЖЕН быть указан новый постоянный URI
по полю Расположение в ответе.
Если метод запроса не был HEAD,
субъект ответа ДОЛЖЕН
содержать краткую гипертекстовую заметку с
гиперссылка на новый URI.
Если код состояния 301 получен в
ответ на запрос, отличный от GET
или HEAD, пользовательский агент НЕ ДОЛЖЕН
автоматически перенаправить запрос
если это не может быть подтверждено
пользователь, так как это может изменить
условия, при которых запрос был
выдано.
Note: When automatically redirecting a POST request after
receiving a 301 status code, some existing HTTP/1.0 user agents
will erroneously change it into a GET request.
10.3.3 302 Найдено
Запрашиваемый ресурс находится
временно под другим URI.
Поскольку перенаправление может быть изменено
в некоторых случаях клиент ДОЛЖЕН
продолжать использовать Request-URI для
будущие запросы. Этот ответ только
кэшируется, если указано
Поле заголовка Cache-Control или Expires.
Временный URI ДОЛЖЕН быть предоставлен
поле Расположение в ответе.
Если метод запроса не был HEAD,
субъект ответа ДОЛЖЕН
содержать краткую гипертекстовую заметку с
гиперссылка на новый URI.
Если код состояния 302 получен в
ответ на запрос, отличный от GET
или HEAD, пользовательский агент НЕ ДОЛЖЕН
автоматически перенаправить запрос
если это не может быть подтверждено
пользователь, так как это может изменить
условия, при которых запрос был
выдано.
Note: RFC 1945 and RFC 2068 specify that the client is not allowed
to change the method on the redirected request. However, most
existing user agent implementations treat 302 as if it
были 303
ответ, выполняя GET для значения поля Location независимо
оригинального метода запроса. Коды состояния 303 и 307 имеют
были добавлены для серверов, которые хотят однозначно дать понять, какие
от клиента ожидается такая реакция.
10.3.4 303 См. Другое
Ответ на запрос может быть
найдено под другим URI и ДОЛЖНО
быть получены с помощью метода GET на
этот ресурс. Этот метод существуетв первую очередь, чтобы позволить вывод
POST-активированный скрипт для перенаправления
пользовательский агент для выбранного ресурса.
новый URI не является заменой ссылки
для первоначально запрошенного ресурса.
Ответ 303 НЕ ДОЛЖЕН кэшироваться,
но ответ на второй
(перенаправленный) запрос может быть
кэшируется.
Другой URI ДОЛЖЕН быть задан
поле Расположение в ответе.
Если метод запроса не был HEAD,
субъект ответа ДОЛЖЕН
содержать краткую гипертекстовую заметку с
гиперссылка на новый URI.
Note: Many pre-HTTP/1.1 user agents do not understand the 303
status. When interoperability with such clients is a concern, the
302 status code may be used instead, since most user agents react
to a 302 response as described here for 303.
10.3.5 304 Не изменено
Если клиент выполнил
условный запрос GET и доступ
разрешено, но документ не был
модифицированный, сервер ДОЛЖЕН ответить
с этим кодом состояния. 304
ответ НЕ ДОЛЖЕН содержать
тело сообщения, и, следовательно, всегда
завершается первой пустой строкой
после полей заголовка.
Ответ ДОЛЖЕН включать
следующие поля заголовка:
- Date, unless its omission is required by section 14.18.1 If a
сервер без учета часов
правила, а прокси и клиенты добавляют
своя дата для любого ответа
получил без одного (как уже
определено в [RFC 2068], раздел
14.19), кеши будут работать правильно.
- ETag and/or Content-Location, if the header would have been sent
in a 200 response to the same request
- Expires, Cache-Control, and/or Vary, if the field-value might
differ from that sent in any previous response for the same
variant If the conditional GET used a strong cache validator (see
раздел 13.3.3), ответ ДОЛЖЕН
НЕ включать другие заголовки объекта.
В противном случае (то есть, условный GET
использовал слабый валидатор), ответ
НЕ ДОЛЖЕН включать другие заголовки объекта;
это предотвращает несоответствия между
кэшированные сущности-тела и обновленные
Заголовки.
Если ответ 304 указывает на объект
в данный момент не кешируется, то кеш
НЕОБХОДИМО игнорировать ответ и повторять
запрос без условного.
Если кеш использует полученные 304
ответ на обновление записи в кэше,
кэш ДОЛЖЕН обновить запись, чтобы отразить
любые новые значения полей, указанные в
ответ.
10.3.6 305 Использовать прокси
Запрашиваемый ресурс ДОЛЖЕН быть
доступ через прокси, данный
поле Местоположение. Поле Местоположение
дает URI прокси.
получатель должен повторить это
один запрос через прокси. 305
ответы ДОЛЖНЫ быть сгенерированы только
исходные серверы.
Note: RFC 2068 was not clear that 305 was intended to redirect a
single request, and to be generated by origin servers only. Not
observing these limitations has significant security consequences.
10.3.7 306 (не используется)
Код 306 использовался в
предыдущая версия спецификации,
больше не используется, и код
зарезервирован.
10.3.8 307 Временное перенаправление
Запрашиваемый ресурс находится
временно под другим URI.
Поскольку перенаправление МОЖЕТ быть изменено
в некоторых случаях клиент ДОЛЖЕН
продолжать использовать Request-URI для
будущие запросы. Этот ответ только
кэшируется, если указано
Поле заголовка Cache-Control или Expires.
Временный URI ДОЛЖЕН быть предоставлен
поле Расположение в ответе.
Если метод запроса не был HEAD,
субъект ответа ДОЛЖЕН
содержать краткую гипертекстовую заметку с
гиперссылка на новый URI, так как
многие пользовательские агенты до HTTP / 1.1 не
понять статус 307. Следовательно,
примечание ДОЛЖНО содержать
информация, необходимая пользователю для
повторить первоначальный запрос на новый
URI.
Если код состояния 307 получен в
ответ на запрос, отличный от GET
или HEAD, пользовательский агент НЕ ДОЛЖЕН
автоматически перенаправить запрос
если это не может быть подтверждено
пользователь, так как это может изменить
условия, при которых запрос был
выдано.
HTTP 302 лучше, так как известно, что он лучше совместим с клиентами / браузерами.