Что означают HTTP-коды состояния 3xx?

«Что означают HTTP-коды состояния 3xx?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-коды состояния 3xx (Redirection) информируют клиента о том, что для завершения запроса необходимо предпринять дополнительные действия, обычно — обратиться по другому URI (адресу).

Ключевые коды и их семантика:

Код Название Назначение Кешируемость
301 Moved Permanently Ресурс навсегда перемещен на новый URL. Браузеры и поисковики обновляют ссылки. Да
302 Found (ранее Moved Temporarily) Ресурс временно доступен по другому адресу. Последующие запросы должны идти к исходному URL. По умолчанию нет
307 Temporary Redirect Аналогичен 302, но гарантирует, что метод запроса (GET/POST) не будет изменен при редиректе. Нет
308 Permanent Redirect Аналогичен 301, но гарантирует сохранение метода запроса. Да
304 Not Modified Ответ на условный запрос (с заголовками If-Modified-Since или If-None-Match). Контент не изменился, клиент должен использовать кешированную версию.

Пример ответа сервера с редиректом 301:

HTTP/1.1 301 Moved Permanently
Location: https://new-example.com/api/v2/resource
Content-Length: 0

Важно: Для POST-запросов использование 301/302 может привести к изменению метода на GET при следующем запросе. Для безопасного перенаправления POST-запросов используйте 307 или 308.