Obtenha o resultado em outra URL com GET.
Quando usar
Redirecionamento após o POST de um formulário, para que recarregar a página não o envie de novo.
Bom saber
O 303 é o código correto para Post/Redirect/Get: depois do POST de um formulário, redirecione para uma página de resultado com 303, para que o navegador a carregue com GET, e uma atualização ou o botão Voltar não reenvie o formulário. Diferente do 302, a troca para GET é garantida pela especificação para qualquer método original, incluindo PUT e DELETE, e o corpo da requisição é descartado.
Os mecanismos de busca tratam o 303 como um redirecionamento temporário, mas ele raramente aparece em URLs rastreáveis. Ele não vai para o cache, a menos que os cabeçalhos digam o contrário. Em APIs, o 303 pode levar um cliente de uma tarefa assíncrona concluída até o seu resultado. O fetch o segue automaticamente no modo de redirect padrão; response.redirected indica que houve um redirecionamento, e response.url dá o endereço final depois do GET.
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 303 See OtherComo enviar
| Node.js / Express | res.redirect(303, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=303) |
| nginx | return 303 https://example.com$request_uri; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/