307 Temporary Redirect

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 Redirect

Como enviar

Node.js / Expressres.redirect(307, '/new-url')
Python / Flaskreturn redirect('/new-url', code=307)
nginxreturn 307 https://example.com$request_uri;

Como verificar

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de status HTTP