Répéter la même requête à une autre URL.
Quand l’utiliser
Redirection temporaire qui doit conserver la méthode et le corps.
Bon à savoir
307 garantit que le client répète la même méthode et le même corps à la nouvelle URL : un POST reste un POST. Il convient donc au déplacement temporaire de points de terminaison d’API. Vous voyez aussi un 307 « interne » dans les DevTools de Chrome quand HSTS est actif : le navigateur passe de lui-même de http:// à https://, sans contacter le serveur, et l’indique par Non-Authoritative Reason: HSTS.
Les moteurs de recherche traitent 307 comme temporaire, à l’image de 302, et les navigateurs ne le mettent pas en cache sans en-têtes explicites. Le corps doit pouvoir être renvoyé : fetch avec un corps ReadableStream en streaming ne peut pas suivre un 307 et échoue. Les navigateurs et curl suppriment l’en-tête Authorization quand une redirection part vers un autre hôte ; curl ne le conserve qu’avec --location-trusted. Utilisez curl -L pour le suivre : la méthode est conservée automatiquement.
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 307 Temporary RedirectComment l’envoyer
| Node.js / Express | res.redirect(307, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=307) |
| nginx | return 307 https://example.com$request_uri; |
Comment le vérifier
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/