Originalmente solo había 302
| Response | What browsers should do |
|------------------------|---------------------------|
| 302 Found | Redo request with new url |
La idea es que:
- si estuviera haciendo una
GET
en algún lugar, volvería a hacer su GET
a la nueva URL
- si estuviera haciendo una
POST
en algún lugar, volvería a hacer su POST
a la nueva URL
- si estuviera haciendo una
PUT
en algún lugar, volvería a hacer su PUT
a la nueva URL
- si estuviera haciendo una
DELETE
en algún lugar, volvería a hacer su DELETE
a la nueva URL
- etc.
Lamentablemente, todos los navegadores lo hicieron mal. Al obtener un 302
, siempre cambiarían a GET
la nueva URL, en lugar de volver a intentar la solicitud con el mismo verbo ( por ejemplo , POST
):
- Mosaico lo hizo mal
- Netscape copió los errores en mosaico; entonces se equivocaron
- Internet Explorer copió los errores en Netscape; entonces se equivocaron
Se volvió de facto incorrecto.
Todos los navegadores se 302
equivocaron. Así 303
y 307
fueron creados.
El | Respuesta | ¿Qué deberían hacer los navegadores? Lo que realmente hacen los navegadores | | ------------------------ | ------------------------ --- | --------------------------- | El | 302 encontrado | Rehacer solicitud con nueva url | OBTENER con nueva url | El | 303 Ver otros | OBTENER con nueva url | OBTENER con nueva url | El | Redirección temporal 307 | Rehacer solicitud con nueva url | Rehacer solicitud con nueva url |
En forma de cuadro
Los 5 tipos diferentes de redireccionamientos:
╔═══════════╤════════════════════════════════════════════════╗
║ │ 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 |