307 Redirecionamento Temporário

O que é um redirecionamento temporário 307, como ele preserva estritamente o método HTTP ao contrário de um 302, onde aparece (HSTS, mudanças temporárias) e como o Google o trata para SEO.

Publicado pela primeira vez: 28 de jun. de 2026 · Última atualização: 22 de ago. de 2026 · Avançado
Idiomas
1 sinal de evidência nesta página

Um redirecionamento temporário 307 significa para o Google o mesmo que um 302 — um sinal fraco e temporário que não transfere o ranking da URL original para o destino —, portanto não há motivo de ranking para preferir um ao outro. A diferença real em relação a 302 é uma garantia da especificação: 307 não pode mudar o método ou o corpo da solicitação, então POST continua sendo POST. Isso importa para formulários, APIs e frameworks modernos (o Next.js usa 307 por padrão) e é irrelevante para redirecionamentos comuns de páginas GET. O 307 que mais confunde as pessoas não é um redirecionamento: é o artefato exclusivo do navegador produzido pelo HSTS ao atualizar http para https, com corpo de 0 bytes que o servidor nunca enviou — um verificador de redirecionamentos ou uma solicitação curl simples (não apenas uma sessão anônima nova, que não pode substituir um domínio HSTS pré-carregado) mostra o código de status real.

TL;DR — Um 307 é um redirecionamento temporário que, pela RFC 9110, “MUST NOT change the request method” (tradução) «NÃO DEVE mudar o método da solicitação» — a única garantia rígida que um 302 não oferece. Para SEO, ele não muda nada: a documentação do Google o lista como “Equivalent to 302(tradução) «Equivalente a 302» (um sinal fraco e temporário), e Mueller disse que a escolha entre 307 e 302 “doesn’t really matter” (tradução) «não importa muito» para a Busca — a questão é se o redirecionamento precisa funcionar para tráfego POST/API. O 307 que realmente confunde as pessoas é o artefato HSTS: um “redirecionamento” de 0 bytes, visível apenas no navegador, que o servidor nunca enviou e que surge quando o navegador atualiza http para https por conta própria. Há dois casos funcionalmente sem relação, e mantê-los separados é todo o trabalho.

Um 307 tem dois casos completamente diferentes

Esta é a ideia organizadora de tudo a seguir, e vem diretamente do meu guia de códigos de status, onde 307 aparece em duas entradas separadas: “307 Temporary Redirect – Has the same functionality as a 302 redirect, except you can’t switch between POST and GET” (tradução) «Redirecionamento temporário 307 — tem a mesma funcionalidade que um redirecionamento 302, exceto que você não pode alternar entre POST e GET» e “307 HSTS Policy – Forces the client to use HTTPS when making requests instead of HTTP.” (tradução) «Política HSTS do 307 — força o cliente a usar HTTPS ao fazer solicitações em vez de HTTP.» Eles compartilham um número e quase nada mais:

  1. 307 como redirecionamento temporário real, emitido pelo servidor — escolhido deliberadamente (ou definido por padrão por um framework) para preservar o método e o corpo HTTP em uma solicitação que não seja GET.
  2. 307 como artefato do navegador HSTS — não é uma resposta do servidor. O navegador atualiza http para https internamente e rotula essa atualização como 307.

Confundir esses dois casos é a maior fonte isolada de confusão sobre 307. Vou tratá-los um de cada vez.

Caso 1: o 307 real — o que a especificação exige

A RFC 9110 (a especificação atual de semântica HTTP) é inequívoca na seção §15.4.8:

“The 307 (Temporary Redirect) status code indicates that the target resource resides temporarily under a different URI and the user agent MUST NOT change the request method if it performs an automatic redirection to that URI.” (tradução) «O código de status 307 (Redirecionamento temporário) indica que o recurso de destino reside temporariamente sob um URI diferente e o agente de usuário NÃO DEVE alterar o método da solicitação se realizar um redirecionamento automático para esse URI.»

Evidence for this claim RFC 9110 defines 307 Temporary Redirect as a temporary move and requires clients not to change the request method when following it automatically. Scope: HTTP semantics for real server 307 responses, not browser-internal HSTS displays. Confidence: high · Verified: IETF: RFC 9110 §15.4.8 — 307 Temporary Redirect

Esse “MUST NOT” (tradução) «NÃO DEVE» é uma exigência rígida, não uma sugestão. Compare-o com a seção sobre 302 (§15.4.3), que documenta abertamente a confusão histórica que o 307 foi criado para corrigir: “For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.” (tradução) «Por razões históricas, um agente de usuário PODE mudar o método da solicitação de POST para GET na solicitação seguinte. Se esse comportamento for indesejado, o código de status 307 (Redirecionamento temporário) pode ser usado.» Em outras palavras, 307 existe especificamente para remover a ambiguidade POST→GET que clientes antigos tinham com 302s.

A MDN apresenta a versão prática da mesma distinção:

“The difference between 307 and 302 is that 307 guarantees that the client will not change the request method and body when the redirected request is made. With 302, older clients incorrectly changed the method to GET. 307 and 302 responses are identical when the request method is GET.” (tradução) «A diferença entre 307 e 302 é que 307 garante que o cliente não mudará o método e o corpo da solicitação quando a solicitação redirecionada for feita. Com 302, clientes antigos mudavam incorretamente o método para GET. As respostas 307 e 302 são idênticas quando o método da solicitação é GET.»

Essa última frase é a que mais importa para SEO. Quase todo redirecionamento relevante para um profissional de SEO — uma página antiga para uma nova — é uma solicitação GET e, para solicitações GET, 307 e 302 são literalmente idênticos. A garantia de preservação do método só importa quando o método não é GET: reenvios de formulários, endpoints de API, destinos de webhooks e handoffs POST de checkout ou autenticação. A especificação garante o método e o corpo — ela não define por si só como cada cliente tratará cabeçalhos, credenciais ou solicitações entre origens ao repetir a solicitação; portanto, verifique isso com seu cliente real em vez de presumir comportamento byte a byte. Se você estiver comparando os dois códigos para uma mudança normal de página, o assunto é tratado em profundidade no artigo específico sobre 302 versus 307 — este artigo pressupõe que você já conhece o conceito básico de redirecionamento temporário do aprofundamento sobre 302 e se concentra no que é exclusivo do 307.

302 versus 303 versus 307, em uma tabela

Os três estão na categoria “temporário” da RFC, mas não se comportam da mesma forma nos dois eixos que realmente importam — preservação do método e cache:

CódigoMétodo no redirecionamento automáticoArmazenável em cache heuristicamente?
302 FoundPode mudar POST para GET (comportamento histórico do cliente; não é exigência da RFC)Não
303 See OtherBusca deliberadamente o destino com GET ou HEADNão
307 Redirecionamento temporárioNÃO DEVE mudar o métodoNão

Nenhum dos três é armazenável heuristicamente por padrão — um 307 (como 302 e 303) precisa de um sinal explícito de frescor (Cache-Control, Expires etc.) para que um cache o armazene sem perguntar novamente.

Caso 1, continuação: como o Google trata um 307 real para SEO

Versão curta: exatamente como um 302. A documentação de HTTP Status Codes do Google lista a linha 307 como “Equivalent to 302(tradução) «Equivalente a 302», e a linha 302 que ele herda explica o que isso significa:

“By default, Google’s crawlers follow the redirect, and Google systems use the redirect as a weak signal that the redirect target should be processed.” (tradução) «Por padrão, os rastreadores do Google seguem o redirecionamento, e os sistemas do Google usam o redirecionamento como um sinal fraco de que o destino deve ser processado.»

“Weak” (tradução) «Fraco» é a palavra operacional — um redirecionamento temporário não consolida a canonicalização no destino como um permanente faz. A documentação do Google sobre “Redirects and Google Search” (tradução) «Redirecionamentos e a Pesquisa Google» agrupa 302, 303 e 307 sob “temporary” (tradução) «temporário» e descreve o comportamento diretamente: “Googlebot follows the redirect, but the indexing pipeline doesn’t use the redirect as a signal that the redirect target should be canonical.” (tradução) «O Googlebot segue o redirecionamento, mas o pipeline de indexação não usa o redirecionamento como sinal de que o destino deve ser canônico.» A mesma página enquadra a intenção assim: “If you just want to send users to a different page temporarily, use a temporary redirect.” (tradução) «Se você apenas quer enviar usuários para uma página diferente temporariamente, use um redirecionamento temporário.»

Evidence for this claim Google's indexing pipeline does not use a temporary 302, 303, or 307 redirect as a signal that the redirect target should be canonical. Scope: redirect crawling, indexing, and canonicalization Confidence: high · Verified: Redirects and Google Search

Imediatamente depois das linhas 307 e 308, o Google acrescenta a ressalva que vale a pena tatuar na parede:

“While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (tradução) «Embora o Google trate esses códigos de status da mesma forma, lembre-se de que eles são semanticamente diferentes. Use o código de status apropriado para o redirecionamento para que outros clientes (por exemplo, leitores eletrônicos e outros mecanismos de busca) possam se beneficiar dele.»

Assim, o Google coloca 307 e 302 na mesma categoria para ranking, mas ainda orienta você a escolher o código semanticamente correto. Essa é toda a resposta de SEO. Evidence for this claim Google treats 307 as equivalent to 302 for Search while noting that the HTTP semantics differ. Scope: Google Search redirect handling; clients still need the semantically appropriate status code. Confidence: high · Verified: Google: HTTP status codes and Search John Mueller foi ainda mais direto no episódio 51 do programa Fora do registro da Busca (“Vamos falar de redirecionamentos”), explicando que “with 307, 308, it also forwards POST requests” (tradução) «com 307 e 308, ele também encaminha solicitações POST» — ao contrário de 301/302, que encaminham solicitações GET — e então resumindo o ponto:

Para SEO, a escolha entre esses códigos não importa muito; a questão prática é se o redirecionamento precisa funcionar para APIs, que normalmente não precisam ser indexadas diretamente na Busca.

Não há vantagem de ranking em trocar seus redirecionamentos temporários por 307. O único motivo válido para escolhê-lo é a preservação do método/corpo — ou, como preferência geral de preparação para o futuro, algo a que voltarei no final.

Caso 1, continuação: padrões de frameworks e CDNs

Uma parcela crescente das perguntas “por que isto é um 307?” não envolve escolhas deliberadas — são padrões de frameworks. A função redirect() do Next.js usa 307 por padrão, e a documentação explica explicitamente o motivo, sob o título “Why does redirect use 307 and 308?” (tradução) «Por que redirect usa 307 e 308?»: “The redirect() method uses a 307 by default, instead of a 302 temporary redirect, meaning your requests will always be preserved as POST requests.” (tradução) «O método redirect() usa 307 por padrão, em vez de um redirecionamento temporário 302, o que significa que suas solicitações sempre serão preservadas como solicitações POST.» (O Next.js usa 303 especificamente dentro de Server Actions e oferece permanentRedirect() separadamente para o caso 308.) Se você está vendo 307s que não escreveu manualmente, verifique se seu framework ou plataforma de edge os está definindo como padrão para redirecionamentos que não sejam GET — normalmente essa é a resposta, e normalmente está correta.

Caso 2: o “307 fantasma” do HSTS que seu servidor nunca enviou

Este é o território realmente pouco coberto e onde um artigo dedicado a 307 se justifica. Quando um site envia um cabeçalho Strict-Transport-Security (HSTS), ele diz ao navegador: a partir de agora, carregue-me apenas por https. Na próxima solicitação à versão http, o navegador atualiza para https por conta própria, sem falar com o servidor — e mostra essa atualização interna como um “307” nas ferramentas de desenvolvimento e nos rastreadores.

John Mueller explicou a mecânica em seu site pessoal:

“After seeing the HTTPS URL with the HSTS header (for example, with any redirect from the HTTP version), Chrome will act like it’s seeing a 307 redirect the next time you try to access the HTTP page. Your server’s not returning a 307, Chrome is just showing it to you as such to explain that it’s doing the redirect for you.” (tradução) «Depois de ver a URL HTTPS com o cabeçalho HSTS (por exemplo, com qualquer redirecionamento da versão HTTP), o Chrome agirá como se estivesse vendo um redirecionamento 307 na próxima vez que você tentar acessar a página HTTP. Seu servidor não está retornando um 307; o Chrome está apenas mostrando isso para explicar que está fazendo o redirecionamento por você.»

O corpo de 0 bytes é a pista — como Mueller acrescenta, “the 307 isn’t actually a redirect at all, it’s just a placeholder.” (tradução) «o 307 não é realmente um redirecionamento, é apenas um marcador.» Meu guia de redirecionamentos apresenta a consequência prática para auditorias: “When web servers require clients to only use HTTPS connections (HSTS policy), Google won’t see the 307 because it’s cached in the browser. The initial hit (without cache) will have a server response code that’s likely a 301 or a 302. But your browser will show you a 307 for subsequent requests which makes it more difficult to troubleshoot. You will need to use a fresh Incognito session to see the returned status code.” (tradução) «Quando servidores web exigem que clientes usem apenas conexões HTTPS (política HSTS), o Google não verá o 307 porque ele fica armazenado no cache do navegador. O acesso inicial (sem cache) terá um código de resposta do servidor provavelmente 301 ou 302. Mas seu navegador mostrará um 307 nas solicitações seguintes, o que torna a solução de problemas mais difícil. Você precisará usar uma sessão anônima nova para ver o código de status retornado.»

O que o Googlebot realmente vê no HSTS (e como a história evoluiu)

Duas declarações do Google, separadas por cinco anos, merecem ser lidas juntas. Em dezembro de 2015, Zineb Ait Bahajji (então no Google) explicou, segundo o Search Engine Roundtable, que, com HSTS, o Googlebot via um redirecionamento 301, enquanto o 307 mostrado pelo navegador era apenas interno. Em outubro de 2020, Mueller formulou o ponto de modo um pouco diferente em um vídeo do Ask Google Webmasters (via Search Engine Journal): o Googlebot não interage com esses 307, que em geral não são redirecionamentos reais. De todo modo, o rastreador não está vendo o mesmo “307” que uma pessoa vê nas ferramentas de desenvolvimento — as ferramentas e a infraestrutura de rastreamento mudaram (Fetch as Google foi aposentado para a Inspeção de URL), mas o ponto principal se manteve por pelo menos uma década: não há um 307 real emitido pelo servidor no caso HSTS. Trate a declaração de 2020 como orientação atual; a de 2015 é história útil.

A conclusão operacional importante: HSTS é uma conveniência do navegador, não um mecanismo de descoberta de rastreamento. Os proprietários do site ainda precisam de um redirecionamento real no servidor (um 301 genuíno) para http→https se quiserem que esse caminho funcione para rastreadores.

Como o Bing trata um 307

Sinceramente? Há uma lacuna de documentação. Não encontrei nenhuma declaração pública do Bing que trate de 307 pelo nome, nem especificamente do 307 provocado por HSTS. A orientação de redirecionamentos do Bing (a publicação de 2011 Gerenciando redirecionamentos — 301s, 302s e URLs canônicas e a publicação de 2020 Migração de sites com o Bing) cobre apenas a divisão permanente versus temporária entre 301/302 — não menciona 307, 308 ou HSTS. Portanto, em vez de presumir paridade com o Google, trate o assunto com clareza: o Bing não disse nada publicamente específico sobre 307. O fenômeno ainda é real e relevante para rastreadores independentemente do mecanismo — o SEO Spider do Screaming Frog inclui uma opção “Respect HSTS Policy” (tradução) «Respeitar a política de HSTS» justamente porque HSTS afeta o rastreamento — mas isso é documentação de ferramenta, não uma declaração do Bing.

Quando escolher deliberadamente um 307

Escolha 307 (em vez de 302) sempre que perder o método ou o corpo original quebraria alguma coisa:

  • Endpoints de API e destinos de webhook que recebem POST/PUT/PATCH.
  • Fluxos de envio de formulário (POST) que redirecionam depois do processamento.
  • Handoffs de POST de checkout/login entre hosts.
  • Qualquer situação em que a solicitação carregue um corpo que você não possa perder.

Para uma mudança simples de página para página, 302 e 307 são indistinguíveis para o Google, então qualquer um serve no eixo de SEO. Se você está lidando com a versão permanente dessa mesma lógica de preservação do método, essa é a relação 301 versus 308 — 308 está para 301 assim como 307 está para 302.

Minha preferência declarada, no guia de redirecionamentos, é mais opinativa do que o usual “não importa”: “my preferred order would be: 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0.” (tradução) «minha ordem preferida seria: 307 / 302 / 303 > Meta refresh 0 / HTTP refresh 0.» Coloco 307 primeiro entre as opções temporárias — usá-lo de forma consistente significa que você está sempre seguro quanto à preservação do método, que é aproximadamente o argumento de “completude” que Mueller também apresentou. E qualquer que seja sua escolha, cuide para que um 307 real (ou o artefato HSTS) não se torne um salto em uma cadeia de redirecionamentos mais longa — cada salto extra acrescenta latência e reduz a eficiência.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.