303 See Other : rediriger après l’envoi d’un formulaire
303 See Other redirige le client vers une autre URL qu’il doit récupérer avec GET, en général après l’envoi d’un formulaire.
303 See Other redirige le client vers une autre URL et lui demande de la récupérer avec GET, quelle que soit la méthode de la requête d’origine. Son rôle classique est de conclure l’envoi d’un formulaire : le serveur traite un POST, puis envoie le navigateur vers une page de résultat.
Définition
La RFC 9110, section 15.4.4 décrit le 303 comme une redirection vers une autre ressource, nommée dans Location, qui fournit « une réponse indirecte à la requête d’origine ». Le client la suit avec un GET. Contrairement au 302, il n’y a aucune ambiguïté sur la méthode, et contrairement au 307, la méthode est censée changer.
Un 303 en réponse à un GET est plus rare. Il signifie que le serveur n’a aucune représentation de la chose demandée à envoyer, mais que l’URL cible la décrit. Les sites de données liées (Linked Data) s’en servent pour distinguer l’identifiant d’un objet du monde réel du document qui le décrit.
Post/Redirect/Get
Sans redirection, actualiser une page de remerciement renvoie le formulaire et peut créer des commandes ou des messages en double. Le modèle Post/Redirect/Get règle le problème :
POST /contact HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
name=Sara&message=Hello
HTTP/1.1 303 See Other
Location: /contact/thanks/
Content-Length: 0
En PHP : header('Location: /contact/thanks/', true, 303);. Dans Express : res.redirect(303, '/contact/thanks/').
Impact SEO
La documentation de Google traite le 303 comme le 302 : Googlebot le suit, mais ce n’est qu’un signal canonique faible, et l’URL d’origine reste donc généralement canonique. C’est sans conséquence pour les parcours de formulaire, que les robots n’envoient de toute façon pas. Deux remarques pratiques :
- N’utilisez pas le 303 pour déplacer des pages. Pour les déplacements permanents, utilisez 301 ou 308.
- Les pages de confirmation et de remerciement n’ont aucune valeur pour la recherche ; ajoutez-y noindex pour qu’elles restent hors de l’index si quelqu’un y fait un lien.
Pour voir ce que renvoie l’URL d’une page lors d’une visite ordinaire, tracez-la avec le vérificateur de redirections.
Questions fréquentes
Quand utiliser 303 plutôt que 302 ?
Utilisez 303 après un POST, un PUT ou un DELETE lorsque vous voulez que le navigateur charge une page de résultat avec GET. Il exprime clairement cette intention, alors que la gestion de la méthode par le 302 a historiquement varié selon les clients.
Google traite-t-il le 303 autrement que le 302 ?
Non. La documentation de Google indique que le 303 est traité comme le 302 : Googlebot le suit, et l’URL d’origine reste généralement canonique.
Pourquoi l’actualisation de ma page de formulaire demande-t-elle de renvoyer les données ?
La page de résultat du formulaire a été renvoyée directement en réponse au POST. Redirigez avec un 303 vers une URL de résultat distincte : une actualisation rechargera alors simplement cette page.