HTTPQUERY
Français

302 Found

Utilisation

Lorsque le code de statut 302 Found est reçu, le client comprend que la ressource demandée a été temporairement déplacée. Une seconde requête récupère la ressource à son nouvel emplacement. C’est plus simple qu’un 301, car le client n’est pas censé mettre à jour ses liens internes.

Remarque

Pour des raisons de rétrocompatibilité, le client est autorisé à changer la méthode de requête de POST en GET lors de la redirection. Pour lever toute ambiguïté, le serveur renvoie plutôt un code de statut alternatif. Le code 303 indique que la redirection doit utiliser une méthode GET, tandis que le code 307 impose de préserver la méthode d’origine.

Parmi les déclencheurs courants de réponses 302 figurent le passage de HTTP à HTTPS (souvent mieux servi par un 301), la normalisation d’URL (barre oblique finale), les tests A/B, le routage de contenu basé sur la géolocalisation et les redirections temporaires de maintenance.

Remarque

Un 302 est une redirection réussie, et non une erreur. Le serveur a trouvé la ressource et oriente le client vers son emplacement actuel. Pour résoudre des redirections 302 indésirables : vérifiez que la redirection est intentionnelle, convertissez-la en 301 si le déplacement est définitif, et contrôlez les réglages du CMS ou le .htaccess à la recherche de règles involontaires.

Mise en cache

Une réponse 302 n’est pas cacheable par défaut. Contrairement aux 301 et 308, un 302 exige des en-têtes Cache-Control ou Expires explicites pour être stocké par les caches.

Impact SEO

Google considère un 302 comme un signal faible indiquant que la cible de la redirection est l’URL préférée, contrairement au 301 qui constitue un signal fort. Google traite soit l’URL source, soit l’URL cible. Un 302 maintenu durablement en place peut finir par être traité comme une redirection permanente : un changement définitif est donc mieux servi par un 301.

Exemple

Le client demande une ressource temporairement déplacée. Le serveur indique le nouvel emplacement et fournit un message pertinent à afficher côté client.

Requête

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

Réponse

HTTP/1.1 302 Found
Location: http://example.com/testing/news.html
Content-Type: text/html
Content-Length: 167

<h1>The Newsfeed has moved</h1>
<body>
The site is under development and the newsfeed has
temporarily moved to
<a href=/testing/news.html>here</a>.
</body>

Références de code

.NET

HttpStatusCode.Found

Rust

http::StatusCode::FOUND

Rails

:found

Go

http.StatusFound

Symfony

Response::HTTP_FOUND

Python3.5+

http.HTTPStatus.FOUND

Java

java.net.HttpURLConnection.HTTP_MOVED_TEMP

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MOVED_TEMPORARILY

Angular

@angular/common/http/HttpStatusCode.Found