Что конкретно означает HTTP / 1.1 302?

120

В какой-то статье, которую я однажды прочитал, говорилось, что это означает прыжок (с одного URI на другой), но я обнаружил этот "302", даже когда на самом деле никакого прыжка не было!

О, мой бог
источник
1
Здесь, в документации wc3.org, может быть полезная информация об этом .
Copas
2
Обратите особое внимание: example.com example.com и example.com логически различны, и сайт, желающий получить доступ по одному URL-адресу, может выполнять перенаправление с одного на другой, чтобы достичь этого. Конечно, переадресация 302 - плохой выбор для этого ... но вы, возможно, видели аналогичные тонкие варианты.
Shog9
Обратитесь к этому сайту ( hostingpill.com/http-302-error )
virusarthak

Ответы:

74

Редирект 302 означает, что страница была временно перемещена, а 301 означает, что она была перемещена навсегда.

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

CodeMonkey1313
источник
58

Этот вопрос задавали давно, когда еще витал RFC 2616. Некоторые ответы на этот вопрос основаны на таком документе, который сегодня уже не актуален. Цитата Марка Ноттингема, который на момент написания статьи является сопредседателем рабочих групп IETF HTTP и QUIC:

Не используйте RFC2616 . Удалите его со своих жестких дисков, закладки и запишите (или утилизируйте) все распечатанные копии.

Старый RFC 2616 был заменен следующими документами, которые вместе определяют протокол HTTP / 1.1:

  • RFC 7230 : синтаксис сообщений и маршрутизация
  • RFC 7231 : семантика и содержание
  • RFC 7232 : условные запросы
  • RFC 7233 : запросы диапазона
  • RFC 7234 : кэширование
  • RFC 7235 : аутентификация

Поэтому я стремлюсь дать ответ на основе RFC 7231, который является текущим справочником для кодов состояния HTTP / 1.1.

Код 302состояния

Ответ с 302- это распространенный способ перенаправления URL. Помимо 302кода состояния, ответ должен включать Locationзаголовок с другим URI. Такой заголовок будет проанализирован пользовательским агентом, а затем выполнено перенаправление:


Пример перенаправления


Веб-браузеры могут измениться с POSTна GETв последующем запросе. Если такое поведение нежелательно, 307вместо него можно использовать код состояния (временное перенаправление).

Вот как 302код состояния определяется в RFC 7231 :

6.4.3. 302 Найдено

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

Серверу СЛЕДУЕТ генерировать Locationполе заголовка в ответе, содержащее ссылку URI для другого URI. Пользовательский агент МОЖЕТ использовать Locationзначение поля для автоматического перенаправления. Полезные данные ответа сервера обычно содержат короткую гипертекстовую заметку с гиперссылкой на разные URI.

Примечание. По историческим причинам пользовательский агент МОЖЕТ изменить метод запроса с POSTна GETдля последующего запроса. Если такое поведение нежелательно, 307вместо него можно использовать код состояния (временное перенаправление).

Согласно веб-документации MDN от Mozilla , типичный вариант использования 302:

Веб-страница временно недоступна по непредвиденным причинам. Таким образом, поисковые системы не обновляют свои ссылки.

Другие коды состояния для перенаправления

В RFC 7231 определяет следующие коды состояния для переадресации:

  • 301 (Переехал навсегда)
  • 302 (Нашел)
  • 307 (Временное перенаправление)

RFC 7238 был создан , чтобы определить другой код состояния для перенаправления:

  • 308 (Постоянное перенаправление)

Обратитесь к этому ответу для получения дополнительных сведений.

cassiomolin
источник
2
ну, моя двухдневная боль Locationпрошла, спасибо ( заголовок был тем, что мне помогло). Оказывается, я звонил в службу, httpи они переехали https, все, что я получил в ответ, было то 302, что как только я прочитал Locationздесь заголовок, я увидел http/httpsразницу. Спасибо!
Евгений
У меня та же причина этой ошибки. Мой Javascript указал на неправильное местоположение https, поэтому перенаправление не удалось. Спасибо за комментарий.
Макс
25

Простой способ посмотреть на перенаправления HTTP 301 и 302:

Предположим, у вас есть закладка на « http://sample.com/sample ». Вы используете браузер, чтобы перейти туда.

Перенаправление 302 на другой URL-адрес на этом этапе будет означать, что вам следует сохранить закладку на « http://sample.com/sample ». Это потому, что целевой URL может измениться в будущем.

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

Рыжая борода
источник
9

Из RFC 2616 (спецификация протокола передачи гипертекста) :

10.3.3 302 Найдено

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

   Временный URI ДОЛЖЕН быть указан в поле Location в
   ответ. Если метод запроса не был HEAD, сущность
   ответ ДОЛЖЕН содержать короткую гипертекстовую заметку с гиперссылкой на
   новый URI.

Источник:

http://www.ietf.org/rfc/rfc2616.txt

Reginaldo
источник
6

Из Википедии :

Код состояния HTTP-ответа 302 Найден - это наиболее распространенный способ выполнения перенаправления. Это пример производственной практики, противоречащей стандарту.

Поль Сонье
источник
5

302 - это ответ, указывающий на изменение местоположения ресурса - «Найдено».

URL-адрес, по которому теперь должен находиться ресурс, должен быть в заголовке ответа Location.

«Переход» должен выполняться запрашивающим клиентом (сделать новый запрос URL-адреса ресурса в поле заголовка Location ответа).

Деми
источник
5

С точки зрения SEO, 301 и 302 оба хороши в зависимости от ситуации,

Если может быть возвращена только одна версия (т. Е. Другая перенаправляет на нее), это прекрасно! Такое поведение выгодно, поскольку сокращает дублирование содержимого. В конкретном случае перенаправления на завершающие URL-адреса косой черты в наших результатах поиска, вероятно, будет отображаться версия URL-адреса с кодом ответа 200 (чаще всего URL-адрес завершающей косой черты) - независимо от того, было ли перенаправление 301 или 302.

Сунил
источник
3

HTTP-код 302 предназначен для перенаправления, см. Http://en.wikipedia.org/wiki/HTTP_302 .

Он сообщает браузеру, читающему страницу, перейти в другое место и загрузить другую страницу. Его использование очень распространено.

Имейте в виду
источник
1

Согласно RFC 1945 / Протокол передачи гипертекста - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.
Александр Нойкирхен
источник
0
  • Код 302 указывает на временное перенаправление .
  • Одна из наиболее примечательных особенностей, которые отличают его от редиректа 301, заключается в том, что в случае перенаправления 302 эффективность SEO не переносится на новый URL.
  • Это связано с тем, что это перенаправление было разработано для использования, когда необходимо перенаправить контент на страницу, которая не будет окончательной. Таким образом, как только перенаправление будет устранено, исходная страница не потеряет своего позиционирования в поисковой системе Google.

ПРИМЕР: - Хотя редирект 302 возникает нечасто, в некоторых случаях этот параметр может быть очень полезным. Это самые частые случаи:

  • Когда мы понимаем, что на странице есть неприемлемый контент. Пока мы решаем проблему, мы можем перенаправить пользователя на другую страницу, которая может быть интересна.
  • В случае, если атака на наш веб-сайт требует восстановления какой-либо из страниц, это перенаправление может помочь нам свести к минимуму вероятность.

Редирект 302 - это код, который сообщает посетителям определенного URL-адреса, что страница была временно перемещена, направляя их непосредственно в новое место.

  • Другими словами, перенаправление 302 активируется, когда роботы Google или другие поисковые системы запрашивают загрузку определенной страницы. В этот момент, благодаря этому перенаправлению, сервер возвращает автоматический ответ с указанием нового URL.

  • Таким образом можно избежать ошибок и неудобств как для поисковых систем, так и для пользователей, что гарантирует плавную навигацию.

Для получения более подробной информации обратитесь к этой статье .

virusarthak
источник
0

Код состояния 302 - это код состояния ответа HTTP, указывающий, что запрошенный ресурс был временно перемещен на другой URI. Поскольку директива расположения или текущего перенаправления может быть изменена в будущем, клиент, получивший код ответа 302 Found, должен продолжать использовать исходный URI для будущих запросов.

HTTP-ответ с этим кодом состояния дополнительно предоставит URL-адрес в поле заголовка Location. Это приглашение пользовательскому агенту (например, веб-браузеру) сделать второй, в остальном идентичный, запрос к новому URL-адресу, указанному в поле местоположения. Конечным результатом является перенаправление на новый URL.

Сураб Бхавсар
источник
0

Для тех, кому может быть интересно узнать об именах, я просто добавлю, что это, вероятно, называется «Найдено», потому что основной ресурс (например, частная веб-страница), который пользователь намеревается получить, недоступен в этот момент (например, пользователь еще не подтвердил свою личность), поэтому вместо этого сервер нашел новый ресурс, который может получить пользователь (который в наиболее распространенном случае является страницей входа в систему).

Также это «заблудиться и найти» в манере пряток, что означает, что потерянный ресурс со статусом 302 теряется только временно , он не должен быть потерян навсегда (если у игрока нет плохих намерений;)).

aderchox
источник