В чем разница между кодами состояния HTTP 301 и 308?
в чем разница между HTTP 301
и 308
коды состояния?
301
(перемещено постоянно): этот и все будущие запросы должны быть направлены на данный URI.308
(постоянное перенаправление): запрос и все будущие запросы должны быть повторены с помощью другого URI.
они кажутся похожими.
1 ответов
обзор 301
, 302
и 307
на RFC 7231, текущая ссылка для семантики и содержимого протокола HTTP/1.1, определяет 301
(постоянно перемещается) и 302
(найдено) код состояния, который позволяет изменить метод запроса с POST
to GET
. Эта спецификация также определяет 307
(временное перенаправление) код состояния, который не разрешает запрос метод должен быть изменен с POST
to GET
.
Подробнее см. ниже:
6.4.2. 301 Окончательно Перемещено
на
301
(перемещено постоянно) код состояния указывает, что цель ресурсу был назначен новый постоянный URI, и любые будущие ссылки на этот ресурс должны использовать один из прилагаемых URI. [...]Примечание: по историческим причинам, пользователь агент может изменить запрос метод от
POST
toGET
для последующего запроса. Если это поведение нежелательно,307
(временное перенаправление) код состояния можно использовать вместо этого.
на
302
(найдено) код состояния указывает, что целевой ресурс временно находится под другим URI. После перенаправления может быть изменен при случае, клиент следует продолжать использовать эффективный URI запроса для будущих запросов. [...]Примечание: по историческим причинам, агент пользователя может изменить запрос метод от
POST
toGET
для последующего запроса. Если это поведение нежелательно,307
(временное перенаправление) код состояния можно использовать вместо этого.
6.4.7. 307 Временное Перенаправление
на
307
(Временное перенаправление) код состояния указывает, что цель ресурс временно находится под другим URI и агент пользователя Не следует изменять метод запроса, если он выполняет автоматическое перенаправление на этот URI. Поскольку перенаправление может меняться со временем, клиент должен продолжать использовать исходный URI эффективного запроса для будущих запросов. [...]Примечание: этот код состояния похож на
302
(нашли), за исключением того, что он не позволить изменение метода запроса сPOST
toGET
. Этот спецификация не определяет эквивалентного аналога для301
(переехали Навсегда) (RFC 7238, однако, определяет код состояния308
(Постоянное перенаправление) для этой цели).
необходимость 308
на RFC 7238 был создан для определения 308
(постоянное перенаправление) код состояния, который похож на 301
(перемещено постоянно), но не позволяет изменить метод запроса с POST
to GET
.
на 308
код состояния теперь определяется RFC 7538 (это устарело RFC 7238).
на
308
(постоянное перенаправление) код состояния указывает, что цель ресурс был назначен новый постоянный URI, и любые будущие ссылки на этот ресурс должны использовать один из прилагаемых URI. Клиенты с возможностями редактирования ссылок должны автоматически повторно связать ссылки на действующий URI запроса к один или несколько новых ссылок, отправленных сервером, где это возможно. [...]Примечание: этот код состояния похож на
301
(Перемещено Навсегда), за исключением того, что это не позволяет изменить метод запроса отPOST
вGET
.
Se у нас есть следующее:
+-----------+-----------+
| Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET | 301 | 302 |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308 | 307 |
+------------------------------------------------------------+-----------+-----------+
выбор наиболее подходящего кода состояния
посмотрите на диаграмму ниже (извлечено из этого страница):