HTTP 307 Temporary Redirect
Строгий временный редирект: перейдите на другой URL и повторите запрос точно в том же виде, в каком он был отправлен.
Что означает HTTP 307
HTTP 307 Temporary Redirect работает как 302 с одной добавленной гарантией: клиент должен повторить запрос на новый URL с тем же методом и телом. Перенаправленный POST остаётся POST — ничто незаметно не преобразуется в GET.
Браузеры также генерируют 307 внутренне: когда сайт находится в списке предзагрузки HSTS, браузер сам обновляет http:// до https:// и показывает в DevTools «307 Internal Redirect» без какого-либо сетевого запроса.
Частые причины ответов 307
- API временно перенаправляет POST/PUT-запрос на другой эндпоинт.
- HSTS: браузер внутренне обновляет http:// до https:// (отображается как 307 в DevTools).
- Снижение нагрузки или окна обслуживания, перенаправляющие операции записи на резервный эндпоинт.
Хорошие практики для разработчиков
- Используйте 307 всегда, когда у перенаправляемого запроса есть тело, которое должно сохраниться при переходе.
- Для постоянных перемещений с сохранением метода вместо этого используйте 308.
- Помните, что клиенты повторно отправляют полное тело запроса — избегайте 307 для очень больших загрузок, если можете сразу направить клиентов на правильный URL.
Пример ответа
HTTP/1.1 307 Temporary Redirect Location: https://api.example.com/v2/orders Retry-After: 0
Частые вопросы
В чём разница между 302 и 307?
Оба временные, но 307 запрещает менять метод запроса — POST повторяется как POST. С 302 браузеры исторически переключаются на GET.
Почему DevTools показывает «307 Internal Redirect»?
Браузер сам обновил запрос до HTTPS (HSTS), не обращаясь к серверу. Это отображается как синтетический 307.
Есть ли постоянная версия 307?
Да — 308 Permanent Redirect: то же правило сохранения метода, но кэши и поисковые системы считают перемещение постоянным.