Você está finalizando uma grande compra online. Preenche os detalhes do seu cartão de crédito, clica no botão "Pagar Agora" e, por um breve momento, seu navegador envia uma requisição POST com todos os seus dados sensíveis. De repente, o servidor precisa redirecioná-lo para uma página de autenticação 3D Secure. O que acontece com aquela requisição POST original com suas informações de pagamento? Ela se perde? É enviada incorretamente?
Este cenário crítico é onde as sutis diferenças entre os códigos de redirecionamento HTTP se tornam massivamente importantes. É o trabalho específico de um dos códigos de status mais precisos e valiosos: 307 Temporary Redirect.
Enquanto seu primo 302 Found é um "redirecionamento temporário" bem conhecido, o 307 é seu irmão mais rigoroso e confiável. Ele foi criado para resolver uma ambiguidade crucial na especificação HTTP original, garantindo que operações sensíveis como pagamentos e envios de formulários não sejam tratadas incorretamente durante um redirecionamento.
É a diferença entre uma instrução vaga como "Vá para lá" e um comando preciso como "Pegue tudo o que você ia me dar e entregue para aquela outra pessoa, em vez disso."
Se você é um desenvolvedor construindo aplicações web robustas, especialmente com APIs que lidam com pagamentos, logins ou submissões de dados, entender o 307 é essencial.
E antes de mergulharmos nos detalhes técnicos, se você está construindo ou testando APIs que envolvem fluxos de redirecionamento complexos, você precisa de uma ferramenta que possa lidar com essas nuances. Baixe o Apidog gratuitamente; é uma plataforma API completa que permite testar facilmente diferentes tipos de redirecionamento, verificar se os métodos de requisição são preservados e garantir que os caminhos críticos da sua aplicação sejam seguros e confiáveis.
Agora, vamos arregaçar as mangas e explorar tudo sobre o código de status 307 Temporary Redirect.
O Problema: A Ambiguidade do Redirecionamento 302
Para entender o 307, devemos primeiro entender a falha que ele foi projetado para corrigir. A história começa com o redirecionamento temporário original, 302 Found.
A especificação HTTP/1.0 para 302 era ambígua. Ela afirmava que o cliente deveria realizar o redirecionamento, mas não dizia explicitamente se a requisição redirecionada deveria usar o mesmo método HTTP (por exemplo, POST, PUT) da requisição original.
Isso levou a um problema: por razões de segurança, a maioria dos fornecedores de navegadores implementou o 302 alterando o método da requisição redirecionada para GET. Isso fazia sentido para a maioria da navegação web básica, mas causou desastres para interações programáticas ou baseadas em API.
O Cenário de Desastre:
- Um cliente
POSTa dados de formulário para/submit-payment. - O servidor responde com
302 Founde um cabeçalhoLocation: /confirm. - O navegador segue o redirecionamento enviando uma requisição GET para
/confirm. - Os dados sensíveis do
POSTsão perdidos. O endpoint/confirm, esperando umGET, pode exibir uma página, mas não tem ideia de qual pagamento confirmar.
O código de status 307 foi introduzido no HTTP/1.1 para eliminar essa ambiguidade perigosa de uma vez por todas.
O Que o Redirecionamento Temporário HTTP 307 Realmente Significa?
O código de status 307 Temporary Redirect é uma instrução clara e inequívoca. Ele indica que o recurso alvo reside temporariamente sob uma URI diferente, e o agente do usuário NÃO DEVE alterar o método de requisição usado na requisição original ao fazer a requisição redirecionada.
Se a requisição original foi um POST, a requisição redirecionada deve ser um POST. Se foi um PUT, deve permanecer um PUT. O método e o corpo devem ser idênticos.
Uma resposta 307 típica se parece com isto:
HTTP/1.1 307 Temporary RedirectLocation: <https://auth.example.com/3d-secureContent-Type:> text/htmlContent-Length: 125
<html><head><title>307 Temporary Redirect</title></head><body><center><h1>307 Temporary Redirect</h1></center></body></html>
A chave, como em todos os redirecionamentos, é o cabeçalho Location: <https://auth.example.com/3d-secure>. A mágica está na garantia semântica do próprio código de status 307.
Por Que Existem Redirecionamentos em HTTP?
Os redirecionamentos existem para ajudar servidores e clientes a comunicar mudanças na disponibilidade de recursos sem quebrar a experiência do usuário.
Alguns cenários comuns incluem:
- Migrações de sites → Mudança de
http://parahttps://. - Interrupções temporárias → Direcionar o tráfego enquanto os servidores são mantidos.
- Versionamento de API → Enviar clientes para um endpoint temporário mais recente.
Sem redirecionamentos, os usuários ficariam olhando para mensagens de erro sempre que os recursos mudassem.
307 vs. 302: A Diferença Crítica
Esta é a distinção mais importante. A diferença é toda sobre a preservação do método.
| Característica | 302 Found |
307 Temporary Redirect |
|---|---|---|
| Especificação Original | Ambígua sobre a mudança de método. | Proíbe explicitamente a mudança de método. |
| Comportamento Típico do Navegador | Muda POST para GET. Esta é a diferença crítica. | Preserva o método original (POST permanece POST). |
| Segurança | Inseguro. Não deve ser usado após uma requisição não-idempotente (como POST). | Seguro. Projetado especificamente para requisições não-idempotentes. |
| Analogia | "A informação que você enviou foi recebida. Agora, por favor, vá para esta nova página para ver o resultado." (Os dados são entregues). | "Por favor, reenvie o mesmo pacote exato de informações para este novo endereço." (Os dados são redirecionados). |
Quando usar qual?
- Use
302 Foundquando você deseja redirecionar após um POST, mas a submissão real dos dados está completa, e o redirecionamento é apenas para mostrar uma página de resultado. (Embora303 See Otherseja frequentemente ainda melhor para isso). - Use
307 Temporary Redirectquando a requisição original (e seu método/corpo) deve ser reenviada para uma URI diferente para completar a ação. Isso é comum em fluxos de autenticação, gateways de pagamento e cadeias de API.
Como o Redirecionamento Temporário 307 Funciona
Aqui está um fluxo simplificado:
1. O cliente solicita um recurso:
POST /checkout HTTP/1.1
Host: shop.example.com
2. O servidor responde com 307 Temporary Redirect:
HTTP/1.1 307 Temporary Redirect
Location: <https://secure.example.com/checkout>
3. O cliente repete a requisição POST no novo local:
POST /checkout HTTP/1.1
Host: secure.example.com
O ponto chave: O método e o corpo da requisição são preservados.
Um Exemplo do Mundo Real: O Fluxo de Pagamento
Vamos analisar o cenário de pagamento para ver o 307 em ação.
1. O POST Original: O usuário envia o formulário de pagamento. O navegador envia:
POST /checkout/payment HTTP/1.1Host: shop.example.comContent-Type: application/x-www-form-urlencoded
card_number=4111...&expiry=12/25&cvc=123
2. A Resposta 307 do Servidor: O servidor da loja precisa encaminhar para o sistema 3D Secure do banco. Ele responde:
HTTP/1.1 307 Temporary RedirectLocation: <https://api.bank.com/3d-secure/authenticate>
3. O POST Preservado: O navegador recebe a resposta 307. Como a especificação é inequívoca, ele sabe que deve reenviar a requisição POST exatamente a mesma com o corpo exatamente o mesmo para o novo local.
POST /3d-secure/authenticate HTTP/1.1Host: api.bank.comContent-Type: application/x-www-form-urlencoded
card_number=4111...&expiry=12/25&cvc=123
4. O Resultado Final: A API do banco recebe os detalhes de pagamento diretamente, realiza a autenticação e, em seguida, responde ao cliente com os próximos passos (provavelmente um redirecionamento 303 ou 302 de volta para a página de confirmação da loja).
Este fluxo garante que nenhum dado sensível seja perdido entre a loja e o banco.
Quando Você Deve Usar 307 vs 301 ou 302?
- 301 Moved Permanently → Quando a localização do recurso nunca mais mudará.
- 302 Found → Quando o recurso está temporariamente em outro lugar, mas a preservação do método não é crítica.
- 307 Temporary Redirect → Quando o recurso está temporariamente em outro lugar, e você DEVE preservar o método HTTP.
Melhor regra prática:
- Use 301 para mudanças permanentes.
- Use 307 para movimentos temporários que envolvem operações sensíveis (como requisições POST).
Benefícios de Usar o Redirecionamento Temporário 307
- Previsibilidade → O método da requisição é sempre preservado.
- Segurança → Evita rebaixamentos acidentais de método (por exemplo, POST virando GET).
- Clareza para o desenvolvedor → Clientes sabem exatamente qual comportamento esperar.
Desvantagens e Equívocos Comuns
- Alguns clientes mais antigos podem não lidar com o 307 corretamente.
- Desenvolvedores às vezes confundem 307 com 302, levando a comportamentos não intencionais.
- Profissionais de SEO ocasionalmente interpretam mal o 307 como equivalente ao 301 – não é.
307 e Desenvolvimento de API
No mundo das APIs, o 307 desempenha um papel importante:
- Garante que requisições não-idempotentes (como POST) permaneçam consistentes.
- Ajuda gateways de API a rotear o tráfego com segurança durante mudanças temporárias.
- Fornece uma maneira segura de lidar com janelas de manutenção.
Sem o 307, os desenvolvedores correm o risco de clientes modificarem o tipo de requisição sem intenção.
Testando Redirecionamentos 307 com Apidog

Testar esse comportamento é crucial. Se você está construindo ou testando APIs, provavelmente desejará ver como seu cliente lida com as respostas 307. Você deve garantir que seu cliente lide corretamente com as respostas 307, preservando o método e o corpo. Apidog é a ferramenta perfeita para isso.
Com Apidog, você pode:
- Criar uma Requisição POST: Configure facilmente uma requisição POST com um corpo JSON ou form-data para seu endpoint.
- Simular uma Resposta 307: Configure seu mock de servidor no Apidog para retornar um
307 Temporary Redirectcom um cabeçalhoLocation. - Observar o Redirecionamento Automático: O Apidog seguirá automaticamente o redirecionamento. O teste chave é verificar o log de requisições para a segunda requisição. Ele preservou o método POST? Ele enviou o mesmo corpo exato?
- Comparar com 302: Execute o mesmo teste, mas faça seu mock retornar um
302em vez disso. Observe como o Apidog (comportando-se como um navegador padrão) muda o método para GET e descarta o corpo. Esta demonstração visual ilustra perfeitamente a diferença. - Testar Clientes API: Se você está construindo um cliente API programático (por exemplo, em Node.js, Python), você pode usar o Apidog para simular o servidor e garantir que seu código cliente lide corretamente com as respostas
307, preservando o método.
Este nível de teste garante que operações críticas como pagamentos e logins não falharão em produção. Baixe o Apidog gratuitamente e experimente simular uma resposta 307 hoje mesmo. É uma ótima maneira de testar suas aplicações em condições de redirecionamento do mundo real.
Implicações de SEO do Redirecionamento Temporário 307
Do ponto de vista de SEO:
- O 307 informa aos motores de busca que o redirecionamento é temporário.
- Ao contrário do 301, os motores de busca não transferirão a equidade de link (PageRank) para a nova URL.
- Isso é perfeito para testes A/B, promoções ou campanhas de curto prazo.
Se você usar o 307 no lugar do 301, corre o risco de perder benefícios de SEO a longo prazo.
307 vs. 308 Redirecionamento Permanente
Assim como o 307 é a contraparte estrita do 302, ele tem um irmão para movimentos permanentes: 308 Permanent Redirect.
307 Temporary Redirect: "Reenvie temporariamente a mesma requisição para esta outra URL."308 Permanent Redirect: "Reenvie permanentemente a mesma requisição para esta outra URL. Atualize seus registros."
Use o 307 para manutenção temporária, testes A/B ou cenários de failover. Use o 308 quando você está mudando permanentemente a URL de um endpoint que espera requisições não-GET.
Considerações de Segurança com 307
Em termos de segurança, o 307 é frequentemente mais seguro que o 302 porque evita a manipulação de requisições. No entanto, tenha em mente:
- Redirecionamentos maliciosos ainda podem levar usuários a sites de phishing.
- Sempre use HTTPS no cabeçalho
Locationpara prevenir ataques de downgrade.
Implementação e Melhores Práticas
- Para Desenvolvedores de Servidor: Quando você precisar redirecionar temporariamente uma requisição não-idempotente (POST, PUT, DELETE), use
307. É a escolha mais segura e semanticamente correta. - Para Desenvolvedores de Cliente: Garanta que sua biblioteca cliente HTTP (por exemplo, Axios, Requests) lide corretamente com as respostas
307reenviando a requisição original para o novo local. A maioria das bibliotecas modernas faz isso corretamente. - Sempre Prefira a Precisão: Priorize o uso de
307em vez de302quando você tem certeza de que o método deve ser preservado. Isso elimina a ambiguidade.
Alternativas ao Redirecionamento Temporário 307
Dependendo do seu caso de uso:
- Use 308 Permanent Redirect se a mudança for permanente e você precisar de preservação do método.
- Use 302 Found se o método não importar e a compatibilidade retroativa for mais importante.
- Use 301 Moved Permanently para realocações permanentes onde o SEO é uma prioridade.
Conclusão: A Garantia de Segurança
O código de status HTTP 307 Temporary Redirect é um testemunho da evolução da web em direção a maior precisão e segurança. Ele resolveu uma ambiguidade crítica no protocolo que poderia ter levado à perda de dados e vulnerabilidades de segurança.
O código de status 307 Temporary Redirect é mais do que apenas mais um número na especificação HTTP. Ele resolve problemas do mundo real garantindo que métodos e corpos de requisição permaneçam intactos durante os redirecionamentos.
Embora 302 e 303 tenham seus lugares, o 307 oferece uma garantia crucial: que uma requisição será entregue exatamente como pretendido, mesmo quando seu destino muda temporariamente. Isso o torna indispensável para construir aplicações web confiáveis e seguras que lidam com operações sensíveis.
Compreender as diferenças sutis entre esses códigos de redirecionamento é uma marca de um desenvolvedor sênior. E quando chega a hora de testar e validar se suas aplicações lidam com esses redirecionamentos corretamente, uma ferramenta poderosa como o Apidog oferece a visibilidade e o controle necessários para garantir que seus redirecionamentos não apenas funcionem, mas funcionem precisamente.
