Що саме означає HTTP / 1.1 302?


120

У якійсь статті, яку я прочитав одного разу, сказано, що це означає стрибки (з одного URI в інший), але я виявив це "302", навіть коли насправді взагалі не було стрибків!


1
Тут може бути корисна інформація в документації на wc3.org .
Копас

2
Зверніть пильну увагу: example.com example.com та example.com відрізняються логікою, і сайт, який бажає отримати доступ за допомогою однієї URL-адреси, може перенаправлятись з одного на інший, щоб досягти цього. Звичайно, 302 переадресації - це поганий вибір для цього ... але ви, можливо, бачили подібні тонкі варіанти.
Shog9

Перейдіть на цей сайт ( hostingpill.com/http-302-error )
virusarthak

Відповіді:


74

Перенаправлення 302 означає, що сторінку було тимчасово переміщено, тоді як 301 означає, що вона була постійно переміщена.

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


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 (s).

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

Згідно з веб-документами MDN від Mozilla , типовим випадком використання 302є:

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

Інші коди статусу для переадресації

В RFC 7231 визначає наступні коди стану для переадресації:

  • 301 (Переміщено постійно)
  • 302 (Знайдено)
  • 307 (Тимчасовий перенаправлення)

RFC 7238 був створений , щоб визначити інший код стану для перенаправлення:

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

Детальнішу інформацію див. У цій відповіді .


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.
   Оскільки перенаправлення може бути змінено в деяких випадках, клієнт ДОЛЖЕНО
   продовжуйте використовувати URI-запит для майбутніх запитів. Ця відповідь
   є кешованим, лише якщо це вказано в заголовку кеш-керування або закінчується
   поле.

   Тимчасовий URI повинен бути заданий полем Location у
   відповідь. Якщо метод запиту не був HEAD, суб'єкт
   відповідь ДОЛЖЕН би містити коротку гіпертекстову примітку з гіперпосиланням на
   нові URI (s).

Джерело:

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


6

З Вікіпедії :

Код статусу відповіді HTTP 302 знайдений - найпоширеніший спосіб виконання перенаправлення. Це приклад виробничої практики, що суперечить стандарту.



5

302 - відповідь, що вказує на зміну місця розташування ресурсу - "Знайдено".

URL-адреса, де зараз повинен знаходитися ресурс, повинна міститись у заголовку відповіді "Місцезнаходження".

"Перехід" повинен здійснити запитуючий клієнт (зробіть новий запит на 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-адреси.

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

Детальніше див. Цю статтю .


0

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

Відповідь HTTP з цим кодом статусу додатково надасть URL-адресу в полі заголовка Location. Це запрошення до агента користувача (наприклад, веб-браузера) зробити другий, інакше ідентичний, запит на нову URL-адресу, вказану в полі розташування. Кінцевим результатом є перенаправлення на нову URL-адресу.


0

Для тих, кому може бути цікаво називати, я просто додам, що це, ймовірно, називається "Знайдено", оскільки основний ресурс (наприклад, приватна веб-сторінка), який користувач має намір отримати, на даний момент недоступний (наприклад, користувач ще не підтвердив свою особу), тому замість цього сервер знайшов новий ресурс, який користувач може отримувати (це сторінка входу в найбільш поширеному випадку використання).

Крім того, це "загубитися і знайти" в хованках, тобто втрачений ресурс під статусом 302 втрачається лише тимчасово , він не повинен бути втрачений назавжди (якщо у гравця немає поганих намірів;)).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.