Un article que j'ai lu une fois disait que cela signifiait sauter (d'un URI à un autre), mais j'ai détecté ce "302" même s'il n'y avait pas du tout de saut!
Une redirection 302 signifie que la page a été temporairement déplacée, alors qu'une relance 301 signifie qu'elle a été déplacée de manière permanente.
Les valeurs 301 sont bonnes pour la valeur de référencement, tandis que les valeurs 302 ne le sont pas, car les instructions 301 demandent aux clients d'oublier la valeur de l'URL d'origine, tandis que les valeurs 302 conservent la valeur de l'original et peuvent donc potentiellement réduire la valeur en créant deux adresses URL distinctes chacun produit le même contenu (les moteurs de recherche les considèrent comme des doublons distincts plutôt que comme une seule ressource portant deux noms).
Cette question a été posée il y a longtemps, alors que le RFC 2616 traînait toujours. Certaines réponses à cette question sont basées sur ce document, qui n’est plus pertinent de nos jours. Citant Mark Nottingham qui, au moment de la rédaction de cet article, copréside les groupes de travail HTTP et QUIC de l’IETF:
N'utilisez pas la RFC2616 . Supprimez-le de vos disques durs, de vos signets et gravez (ou recyclez de manière responsable) toutes les copies imprimées.
L'ancienne RFC 2616 a été remplacée par les documents suivants qui, ensemble, définissent le protocole HTTP/1.1:
Je vise donc à fournir une réponse basée sur le RFC 7231 qui est la référence actuelle pour les codes d’état HTTP/1.1.
302
_Une réponse avec 302
est un moyen courant d’exécuter une redirection d’URL. Avec le code d'état 302
, la réponse doit inclure un en-tête Location
avec un autre URI. Cet en-tête sera analysé par l'agent d'utilisateur, puis effectuera la redirection:
Les navigateurs Web peuvent passer de POST
à GET
dans la requête suivante. Si ce comportement n'est pas souhaité, le code d'état 307
(redirection temporaire) peut être utilisé à la place.
Voici comment le code d'état 302
est défini dans le RFC 7231 :
Le code d'état _
302
_ (trouvé) indique que la ressource cible réside temporairement sous un autre URI. Étant donné que la redirection peut être modifiée à l'occasion, le client doit continuer à utiliser l'URI de demande effectif pour les demandes futures.Le serveur DEVRAIT générer un champ d’en-tête
Location
dans la réponse contenant une référence d’URI pour les différents URI. L'agent d'utilisateur PEUT utiliser la valeur du champLocation
pour la redirection automatique. La charge utile de réponse du serveur contient généralement une courte note hypertexte avec un lien hypertexte vers le ou les différents URI.Remarque: Pour des raisons historiques, un agent d'utilisateur PEUT changer la méthode de requête de
POST
àGET
pour la requête suivante. Si ce comportement n'est pas souhaité, le code d'état _307
_ (redirection temporaire) peut être utilisé à la place.
Selon Web Docs MDN de Mozilla , un cas d'utilisation typique de 302
est:
La page Web n'est temporairement pas disponible pour des raisons qui n'ont pas été imprévues. De cette façon, les moteurs de recherche ne mettent pas à jour leurs liens.
Le RFC 7231 définit les codes d'état suivants pour la redirection:
Le RFC 7238 a été créé pour définir un autre code d'état pour la redirection:
308
(redirection permanente)Reportez-vous à ceci réponse pour plus de détails.
Une manière simple de regarder les redirections HTTP 301 vs. 302 est la suivante:
Supposons que vous ayez un signet " http://sample.com/sample ". Vous utilisez un navigateur pour y aller.
À ce stade, une redirection 302 vers une URL différente signifierait que vous devez conserver votre signet au format " http://sample.com/sample ". En effet, l'URL de destination peut changer dans le futur.
Une redirection 301 vers une autre URL signifierait que votre signet doit changer pour indiquer la nouvelle URL car il s'agit d'une redirection permanente.
From RFC 2616 (spécification du protocole de transfert d'hypertexte) :
10.3.3 302 trouvé La ressource demandée réside temporairement sous un autre URI. La redirection pouvant parfois être modifiée, le client DEVRAIT [.____]. .] continuer à utiliser l'URI de demande pour les demandes futures. Cette réponse Ne peut être mise en cache que si elle est indiquée par un champ D'en-tête Cache-Control ou Expires. L'URI temporaire DEVRAIT être indiqué par le champ Location du champ réponse. À moins que la méthode de la requête ne soit HEAD, l'entité de la réponse DEVRAIT contenir une courte note hypertexte avec un hyperlien vers Le ou les nouveaux URI.
La source:
Comme indiqué dans le définitions du code d'état http , un 302 indique une redirection (temporaire). "La ressource demandée réside temporairement sous un autre URI"
302 est une réponse indiquant le changement d'emplacement de la ressource - "Trouvé".
L'URL où la ressource devrait maintenant être située doit figurer dans l'en-tête de réponse 'Location'.
Le "saut" doit être effectué par le client demandeur (faites une nouvelle demande à l'URL de la ressource dans le champ d'en-tête d'emplacement de réponse).
En termes de référencement, 301 et 302 sont bons, cela dépend de la situation,
Si une seule version peut être renvoyée (c’est-à-dire que l’autre redirige vers elle), c’est génial! Ce comportement est avantageux car il réduit le contenu en double. Dans le cas particulier des redirections vers les URL de fin de barre oblique, nos résultats de recherche indiqueront probablement la version de l’URL avec le code de réponse 200 (le plus souvent, l’adresse de fin de barre oblique), qu’il s’agisse d’une redirection de type 301 ou 302.
De Wikipedia :
Le code d'état de réponse HTTP 302 trouvé est le moyen le plus courant d'effectuer une redirection. C'est un exemple de pratique industrielle en contradiction avec la norme.
Le code HTTP 302 est destiné à la redirection, voir http://en.wikipedia.org/wiki/HTTP_302 .
Il indique au navigateur en train de lire une page d'aller ailleurs et de charger une autre page. Son utilisation est très courante.
Selon RFC 1945/Protocole de transfert d'hypertexte - HTTP/1. :
302 Moved Temporarily
The requested resource resides temporarily under a different URL.
Since the redirection may be altered on occasion, the client should
continue to use the Request-URI for future requests.
The URL must be given by the Location field in the response. Unless
it was a HEAD request, the Entity-Body of the response should
contain a short note with a hyperlink to the new URI(s).
If the 302 status code is received in response to a request using
the POST method, the user agent must not automatically redirect the
request unless it can be confirmed by the user, since this might
change the conditions under which the request was issued.
Note: When automatically redirecting a POST request after
receiving a 302 status code, some existing user agents will
erroneously change it into a GET request.