Repita a mesma requisição em outra URL.
Quando usar
Redirecionamento temporário que deve manter o método e o corpo.
Bom saber
O 307 garante que o cliente repita o mesmo método e corpo na nova URL, então um POST continua sendo um POST. Isso o torna a escolha certa para mover endpoints de API temporariamente. Você também vê um 307 “interno” no Chrome DevTools quando o HSTS está ativo: o navegador troca http:// por https:// por conta própria, sem contatar o servidor, e o rotula como Non-Authoritative Reason: HSTS.
Os mecanismos de busca tratam o 307 como temporário, como o 302, e os navegadores não o armazenam em cache sem cabeçalhos explícitos. Os corpos precisam poder ser reenviados: fetch com um corpo ReadableStream em streaming não consegue seguir um 307 e falha. Navegadores e o curl descartam o cabeçalho Authorization quando um redirecionamento vai para outro host; o curl só o mantém com --location-trusted. Use curl -L para segui-lo, e o método é preservado automaticamente.
Redirecionamento (3xx)
Os códigos 3xx são redirecionamentos: o cliente precisa ir para outro lugar, ou usar a cópia em cache, para concluir a requisição.
Como fica
HTTP/1.1 307 Temporary RedirectComo enviar
| Node.js / Express | res.redirect(307, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=307) |
| nginx | return 307 https://example.com$request_uri; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/