À l'origine, il y avait juste 302
| Response | What browsers should do |
|------------------------|---------------------------|
| 302 Found | Redo request with new url |
L'idée est que:
- si vous faisiez un
GET
à un endroit, vous referiez votre GET
à la nouvelle URL
- si vous faisiez un
POST
à un endroit, vous referiez votre POST
à la nouvelle URL
- si vous faisiez un
PUT
à un endroit, vous referiez votre PUT
à la nouvelle URL
- si vous faisiez un
DELETE
à un endroit, vous referiez votre DELETE
à la nouvelle URL
- etc
Malheureusement, tous les navigateurs l'ont mal fait. Lors de l'obtention d'un 302
, ils basculeraient toujours vers GET
la nouvelle URL, plutôt que de réessayer la demande avec le même verbe ( par exemple , POST
):
- La mosaïque a mal fait
- Netscape a copié les bogues dans Mosaic; alors ils se sont trompés
- Internet Explorer a copié les bogues dans Netscape; alors ils se sont trompés
C'est devenu de facto faux.
Tous les navigateurs se sont 302
trompés. Ainsi 303
et 307
ont été créés.
| Réponse | Ce que les navigateurs doivent faire | Ce que les navigateurs font réellement | | ------------------------ | ------------------------ --- | --------------------------- | | 302 trouvés | Refaire la demande avec une nouvelle URL | OBTENIR avec une nouvelle URL | | 303 Voir autre | OBTENIR avec une nouvelle URL | OBTENIR avec une nouvelle URL | | 307 Redirection temporaire | Refaire la demande avec une nouvelle URL | Refaire la demande avec une nouvelle URL |
Sous forme de graphique
Les 5 différents types de redirections:
╔═══════════╤════════════════════════════════════════════════╗
║ │ 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) ║
╚═══════════╧════════════════════════╧═══════════════════════╝
Alternativement:
| 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 |