Originalmente havia apenas 302
| Response | What browsers should do |
|------------------------|---------------------------|
| 302 Found | Redo request with new url |
A ideia é que:
- se você estivesse fazendo isso
GET
em algum local, refizesse o seu GET
para o novo URL
- se você estivesse fazendo isso
POST
em algum local, refizesse o seu POST
para o novo URL
- se você estivesse fazendo isso
PUT
em algum local, refizesse o seu PUT
para o novo URL
- se você estivesse fazendo isso
DELETE
em algum local, refizesse o seu DELETE
para o novo URL
- etc
Infelizmente, todos os navegadores fizeram errado. Ao obter um 302
, eles sempre mudam para GET
o novo URL, em vez de tentar novamente a solicitação com o mesmo verbo ( por exemplo , POST
):
- Mosaic fez errado
- O Netscape copiou os erros no Mosaic; então eles entenderam errado
- O Internet Explorer copiou os erros no Netscape; então eles entenderam errado
Tornou-se de fato errado.
Todos os navegadores estão 302
errados. Então 303
e 307
foram criados.
| Resposta O que os navegadores devem fazer | O que os navegadores realmente fazem | | ------------------------ | ------------------------ --- | --------------------------- | | 302 encontrado | Refazer solicitação com novo URL | GET com novo URL | | 303 Ver outros | GET com novo URL | GET com novo URL | | 307 Redirecionamento temporário | Refazer solicitação com novo URL | Refazer solicitação com novo URL |
Em forma de gráfico
Os 5 tipos diferentes de redirecionamentos:
╔═══════════╤════════════════════════════════════════════════╗
║ │ Switch to GET? ║
║ Temporary │ No │ Yes ║
╠═══════════╪════════════════════════╪═══════════════════════╣
║ No │ 308 Permanent Redirect │ 301 Moved Permanently ║
╟───────────┼────────────────────────┼───────────────────────╢
║ Yes │ 307 Temporary Redirect │ 303 See Other ║
║ │ 302 Found (intended) │ 302 Found (actual) ║
╚═══════════╧════════════════════════╧═══════════════════════╝
Alternativamente:
| Response | Switch to get? | Temporary? |
|--------------------------|----------------|------------|
| 301 Moved Permanently | No | No |
| 302 Found (intended) | No | Yes |
| 302 Found (actual) | Yes | Yes |
| 303 See Other | Yes | Yes |
| 307 Temporary Redirect | No | Yes |
| 308 Permanent Redirect | No | No |