Как работает HTTP 302? - PullRequest
       16

Как работает HTTP 302?

44 голосов
/ 28 июля 2010

Как работает HTTP 302?Я хотел бы знать внутренности

Ответы [ 5 ]

45 голосов
/ 28 июля 2010

Вы имеете в виду, как браузеры справляются с этим?Сервер отправляет код 302 вместе с заголовком Location, а браузер запрашивает новый URI, указанный в заголовке Location.

В отличие от 301 (Moved Permanently), браузер продолжает использовать исходный URI для выполнения запросов, если код 302 пропадает

20 голосов
/ 28 июля 2010

Сервер возвращает HTTP-ответ с кодом 302, указывающим на временное перенаправление, и включает заголовок Location:, указывающий новый URI, например,

HTTP/1.1 302 Found
Location: http://some-other-url

и, возможно, другие заголовки на сервере.discretion.

Обычно браузер воспринимает это как директиву для автоматического создания нового отдельного запроса для другого URI, указанного в заголовке местоположения.Клиент (браузер) не заставляет делать это (теоретически он может просто отображать сообщение пользователю или делать все, что ему захочется), но именно так обычно ведут себя клиенты HTTP.

Обратите внимание, что поскольку 302 является перенаправлением временного , клиент с хорошим поведением будет продолжать использовать старый URL-адрес в будущем, а не переходить непосредственно к новому URL-адресу (301 является постояннымперенаправление).

9 голосов
/ 31 марта 2011

От: http://www.ietf.org/rfc/rfc2616.txt и http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

10.3.3 302 Найдено

Запрошенный ресурс временно находится под другим URI.Поскольку перенаправление может иногда изменяться, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов.Этот ответ может быть кэширован, только если он указан в поле заголовка Cache-Control или Expires.

Временный URI ДОЛЖЕН быть задан полем Location в ответе.Если метод запроса не является 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 were a 303
  response, performing a GET on the Location field-value regardless
  of the original request method. The status codes 303 and 307 have
  been added for servers that wish to make unambiguously clear which
  kind of reaction is expected of the client.
2 голосов
/ 28 июля 2010

Внутренности чего?302 - это код возврата, который сервер дает клиенту, то, что делает клиент, зависит от него.RFC дают рекомендации о том, что клиент должен делать, но в реальном мире 301, 302, 303 и 307 обрабатываются всеми основными браузерами одинаково.

1 голос
/ 10 октября 2013

Просто дополнение - Важно, чтобы клиент остановился на одном и том же URL сервера с одним и тем же запросом последовательно / часто.

...