Какой HTTP-код следует использовать для временного перенаправления ресурса, если исходный URL может снова стать актуальным и нужно уведомить клиента о временном перемещении?
Подробное объяснение
Для временного перемещения ресурса с возможностью возврата к исходному URL в будущем следует использовать HTTP-код 302 Found. Этот код указывает клиенту, что ресурс временно доступен по другому адресу, но не следует постоянно запоминать новый URL как основной. Коды 301 и 308 предназначены для постоянных редиректов, что противоречит условию о возможном восстановлении исходного адреса. Коды 404 и 410 не подходят, так как они сообщают о полном отсутствии ресурса без указания на временный характер перемещения.
Часто задаваемые вопросы (FAQ)
1
В чем разница между HTTP 301 и 302?
HTTP 301 означает постоянное перемещение ресурса, и клиенты должны обновить закладки на новый URL. HTTP 302 указывает на временное перемещение, и клиенты должны продолжать использовать исходный URL для будущих запросов.
2
Когда следует использовать HTTP 308 вместо 301?
HTTP 308 используется для постоянного редиректа, но с сохранением метода запроса (например, POST остаётся POST), тогда как 301 может изменить метод на GET в некоторых случаях.
3
Что делать, если ресурс временно недоступен, но не перемещён?
В этом случае следует использовать HTTP-код 503 Service Unavailable с заголовком Retry-After, указывающим, когда повторить запрос, а не редирект.
Типичные ошибки
1
Использование HTTP 301 для временного перемещения
Это неверно, потому что 301 указывает на постоянный редирект, что может привести к тому, что клиенты перестанут использовать исходный URL, даже когда он снова станет актуальным.
2
Применение HTTP 404 или 410 вместо редиректа
Эти коды сообщают, что ресурс не найден или удалён навсегда, что не соответствует условию временного перемещения и не предоставляет клиенту нового адреса.
3
Использование HTTP 307 вместо 302
Хотя 307 также является временным редиректом, он требует сохранения метода запроса, что может быть излишним для простых сценариев, где 302 более универсален и широко поддерживается.