Récupérer le résultat à une autre URL avec GET.
Quand l’utiliser
Rediriger après un POST de formulaire pour qu’une actualisation ne le renvoie pas.
Bon à savoir
303 est le code correct pour le Post/Redirect/Get : après un POST de formulaire, redirigez vers une page de résultat avec un 303 pour que le navigateur la charge en GET, et qu’un rafraîchissement ou le bouton Précédent ne renvoie pas le formulaire. Contrairement à 302, le passage en GET est garanti par la spécification quelle que soit la méthode d’origine, PUT et DELETE compris, et le corps de la requête est abandonné.
Les moteurs de recherche traitent 303 comme une redirection temporaire, mais il apparaît rarement sur des URL explorables. Il n’est pas mis en cache, sauf si les en-têtes le prévoient. Dans les API, 303 peut renvoyer un client d’une tâche asynchrone terminée vers son résultat. fetch le suit automatiquement avec le mode de redirection par défaut ; response.redirected vous indique qu’une redirection a eu lieu, et response.url donne l’adresse finale après le GET.
Redirection (3xx)
Les codes 3xx sont des redirections : le client doit aller ailleurs, ou utiliser sa copie en cache, pour terminer la requête.
À quoi ça ressemble
HTTP/1.1 303 See OtherComment l’envoyer
| Node.js / Express | res.redirect(303, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=303) |
| nginx | return 303 https://example.com$request_uri; |
Comment le vérifier
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/