HTTPQUERY
Français

307 Temporary Redirect

Utilisation

Le code de statut 307 Temporary Redirect indique que la ressource cible est disponible à une autre URL. Le client émet une nouvelle requête vers l’URL indiquée dans l’en-tête Location et n’est pas autorisé à changer la méthode de requête. Cela diffère du code de statut 302, qui permet au client de passer de POST à GET.

Lorsque le comportement souhaité consiste à changer la méthode de requête, le code de statut 303 est l’alternative recommandée. Par exemple, rediriger la soumission d’un formulaire POST vers une page de confirmation utilise un 303 suivi d’un GET.

Le client doit répéter exactement la même méthode, les mêmes en-têtes et le même corps vers la nouvelle URL. Le serveur traite normalement la requête redirigée. Comme le 307 Temporary Redirect n’est pas permanent, les requêtes futures sont censées utiliser l’URL d’origine et revalider le changement temporaire.

Son équivalent permanent est le 308, qui préserve la méthode de requête à l’identique mais signale que le déplacement est définitif et que les clients doivent mettre à jour les liens enregistrés.

La réponse n’est pas mise en cache par défaut. Pour rendre la redirection cacheable, ajoutez un en-tête Cache-Control ou Expires.

Le code de statut 307 Temporary Redirect sert également de redirection interne lorsqu’une politique HSTS est déclarée via l’en-tête Strict-Transport-Security ou la liste de préchargement HSTS. Le client utilise ce code de statut pour rediriger de HTTP vers une connexion sécurisée en HTTPS sans contacter le serveur.

Remarque

Les navigateurs génèrent un « 307 Internal Redirect » dans les DevTools lorsqu’ils font passer HTTP à HTTPS via HSTS. Cette redirection se produit entièrement dans le navigateur, sans aucune requête réseau. L’en-tête Non-Authoritative-Reason: HSTS apparaît dans les DevTools. Des boucles de redirection 307 entre HTTP et HTTPS signalent un conflit entre HSTS et les règles de redirection côté serveur. Assurez-vous que le serveur ne redirige que sur le port HTTP.

Remarque

Le 303 force la requête suivante à utiliser GET quelle que soit la méthode initiale, ce qui en fait le standard pour la redirection après un POST. Le 307 préserve la méthode et le corps d’origine. Le client renvoie le même POST/PUT/PATCH vers la nouvelle URL.

Impact SEO

Google considère un 307 comme un signal faible indiquant que la cible de la redirection est l’URL préférée, contrairement aux 301/308 qui sont des signaux forts. Google indexe soit l’URL source, soit l’URL cible. Un 307 maintenu sur la durée peut finir par être traité comme une redirection permanente ; un changement définitif est donc mieux servi par un 308.

Exemple

Le client demande une ressource et le serveur répond 307 Temporary Redirect parce que la ressource est disponible à un autre emplacement.

Requête

GET /news.html HTTP/1.1
Host: example.com

Réponse

HTTP/1.1 307 Temporary Redirect
Location: http://example.com/breaking/news.html

Références de code

.NET

HttpStatusCode.TemporaryRedirect

Rust

http::StatusCode::TEMPORARY_REDIRECT

Rails

:temporary_redirect

Go

http.StatusTemporaryRedirect

Symfony

Response::HTTP_TEMPORARY_REDIRECT

Python3.5+

http.HTTPStatus.TEMPORARY_REDIRECT

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_TEMPORARY_REDIRECT

Angular

@angular/common/http/HttpStatusCode.TemporaryRedirect