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: то же правило сохранения метода, но кэши и поисковые системы считают перемещение постоянным.