Que signifie exactement HTTP / 1.1 302?

120

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 quand il n'y avait en fait aucun saut!

OMG
la source
1
Il peut y avoir de bonnes informations à ce sujet ici dans la documentation wc3.org .
Copas
2
Faites bien attention: example.com example.com et example.com sont logiquement distincts, et un site souhaitant être accédé via une seule URL peut rediriger de l'un vers l'autre pour y parvenir. Bien sûr, les redirections 302 sont un mauvais choix pour cela ... mais vous avez peut-être vu des variations tout aussi subtiles.
Shog9
Référez ce site ( hostpill.com/http-302-error )
virusarthak

Réponses:

74

Une redirection 302 signifie que la page a été temporairement déplacée, tandis qu'une 301 signifie qu'elle a été déplacée de manière permanente.

Les 301 sont bons pour la valeur SEO, tandis que les 302 ne le sont pas parce que les 301 demandent aux clients d'oublier la valeur de l'URL d'origine, tandis que les 302 conservent la valeur de l'original et peuvent donc potentiellement réduire la valeur en créant deux URL logiquement distinctes qui chacun produit le même contenu (les moteurs de recherche les considèrent comme des doublons distincts plutôt que comme une seule ressource avec deux noms).

CodeMonkey1313
la source
58

Cette question a été posée il y a longtemps, alors que la RFC 2616 traînait toujours. Certaines réponses à cette question sont basées sur un tel 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 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é supplantée par les documents suivants qui, ensemble, définissent le protocole HTTP / 1.1:

Je vise donc à fournir une réponse basée sur la RFC 7231 qui est la référence actuelle pour les codes d'état HTTP / 1.1.

Le 302code d'état

Une réponse avec 302est un moyen courant d'effectuer la redirection d'URL. Avec le 302code d'état, la réponse doit inclure un en- Locationtête avec un URI différent. Un tel en-tête sera analysé par l'agent utilisateur puis effectuera la redirection:


Exemple de redirection


Les navigateurs Web peuvent changer de POSTà GETdans la demande suivante. Si ce comportement n'est pas souhaité, le 307code d'état (Redirection temporaire) peut être utilisé à la place.

Voici comment le 302code d'état est défini dans la RFC 7231 :

6.4.3. 302 Trouvés

Le 302code d'état (Trouvé) indique que la ressource cible réside temporairement sous un URI différent. É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 Locationchamp d'en-tête dans la réponse contenant une référence URI pour les différents URI. L'agent utilisateur PEUT utiliser la Locationvaleur du champ 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 les différents URI.

Remarque: Pour des raisons historiques, un agent utilisateur PEUT changer la méthode de demande de POSTà GETpour la demande suivante. Si ce comportement n'est pas souhaité, le 307code d'état (Redirection temporaire) peut être utilisé à la place.

Selon la documentation Web MDN de Mozilla , un cas d'utilisation typique 302est:

La page Web est temporairement indisponible pour des raisons qui n'ont pas été imprévues. De cette façon, les moteurs de recherche ne mettent pas à jour leurs liens.

Autres codes d'état pour la redirection

La RFC 7231 définit les codes d'état suivants pour la redirection:

  • 301 (Déplacé définitivement)
  • 302 (A trouvé)
  • 307 (Redirection temporaire)

La RFC 7238 a été créée pour définir un autre code d'état pour la redirection:

  • 308 (Redirection permanente)

Reportez-vous à cette réponse pour plus de détails.

cassiomoline
la source
2
Eh bien, ma douleur de deux jours est finie grâce à toi (l'en- Locationtête était la chose qui m'a aidé). Il s'avère que j'appelais un service avec httpet ils ont déménagé https, tout ce que j'ai eu en réponse était 302, dès que j'ai lu l'en- Locationtête ici, j'ai vu la http/httpsdifférence. Je vous remercie!
Eugene
J'ai la même raison sur cette erreur. Mon Javascript a indiqué le mauvais emplacement https et donc la redirection a échoué. Merci pour le commentaire.
Max
25

Une façon simple de regarder les redirections HTTP 301 par rapport à 302 est:

Supposons que vous ayez un signet vers " http://sample.com/sample ". Vous utilisez un navigateur pour vous y rendre.

Une redirection 302 vers une URL différente à ce stade signifierait que vous devez conserver votre signet vers " http://sample.com/sample ". C'est parce que l'URL de destination peut changer à l'avenir.

Une redirection 301 vers une URL différente signifierait que votre signet devrait changer pour pointer vers la nouvelle URL car il s'agit d'une redirection permanente.

Barbe Rouge
la source
9

À partir de la RFC 2616 (la spécification du protocole de transfert hypertexte) :

10.3.3 302 Trouvé

   La ressource demandée réside temporairement sous un URI différent.
   Puisque la redirection peut être modifiée à l'occasion, le client DEVRAIT
   continuez à utiliser Request-URI pour les demandes futures. Cette réponse
   ne peut être mis en cache que s'il est indiqué par un en-tête Cache-Control ou Expires
   champ.

   L'URI temporaire DEVRAIT être donnée par le champ Location dans le
   réponse. À moins que la méthode de demande ne soit HEAD, l'entité du
   réponse DEVRAIT contenir une courte note hypertexte avec un lien hypertexte vers
   le ou les nouveaux URI.

La source:

http://www.ietf.org/rfc/rfc2616.txt

Reginaldo
la source
6

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.

Paul Sonier
la source
5

Selon les définitions de code d'état http, un 302 indique une redirection (temporaire). "La ressource demandée réside temporairement sous un autre URI"

Mitchell McKenna
la source
5

302 est une réponse indiquant un changement d'emplacement de ressource - "Trouvé".

L'URL où la ressource doit maintenant se trouver doit se trouver dans l'en-tête de la réponse "Location".

Le "saut" doit être effectué par le client demandeur (faites une nouvelle requête à l'url de la ressource dans le champ d'en-tête Location de la réponse).

Demi
la source
5

En terme de référencement, 301 et 302 sont tous les deux bons cela dépend de la situation,

Si une seule version peut être retournée (c'est-à-dire que l'autre redirige vers elle), c'est super! Ce comportement est avantageux car il réduit le contenu dupliqué. Dans le cas particulier des redirections vers des URL de barre oblique de fin, nos résultats de recherche afficheront probablement la version de l'URL avec le code de réponse 200 (le plus souvent l'URL de barre oblique de fin), que la redirection soit 301 ou 302.

Sunil
la source
3

Le code HTTP 302 est pour la redirection, voir http://en.wikipedia.org/wiki/HTTP_302 .

Il indique au navigateur lisant une page d'aller ailleurs et de charger une autre page. Son utilisation est très courante.

Être averti
la source
1

Selon RFC 1945 / Hypertext Transfer Protocol - HTTP / 1.0 :

   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.
Alexandre Neukirchen
la source
0
  • Le code 302 indique une redirection temporaire .
  • L'une des caractéristiques les plus notables qui le différencie d'une redirection 301 est que, dans le cas de redirections 302, la force du référencement n'est pas transférée vers une nouvelle URL.
  • En effet, cette redirection a été conçue pour être utilisée lorsqu'il y a un besoin de rediriger du contenu vers une page qui ne sera pas définitive. Ainsi, une fois la redirection supprimée, la page d'origine n'aura pas perdu son positionnement dans le moteur de recherche Google.

EXEMPLE: - Bien qu'il ne soit pas très courant que nous ayons besoin d'une redirection 302, cette option peut être très utile dans certains cas. Voici les cas les plus fréquents:

  • Lorsque nous nous rendons compte qu'il y a du contenu inapproprié sur une page. Pendant que nous résolvons le problème, nous pouvons rediriger l'utilisateur vers une autre page susceptible de l'intéresser.
  • Dans le cas où une attaque sur notre site Web nécessite la restauration de l'une des pages, cette redirection peut nous aider à minimiser l'incidence.

Une redirection 302 est un code qui informe les visiteurs d'une URL spécifique que la page a été déplacée temporairement, les dirigeant directement vers le nouvel emplacement.

  • En d'autres termes, la redirection 302 est activée lorsque des robots Google ou d'autres moteurs de recherche demandent à charger une page spécifique. A ce moment, grâce à cette redirection, le serveur renvoie une réponse automatique indiquant une nouvelle URL.

  • De cette manière, les erreurs et les désagréments sont évités pour les moteurs de recherche et les utilisateurs, garantissant une navigation fluide.

Pour plus de détails, reportez-vous à cet article .

virusarthak
la source
0

Un code d'état 302 est un code d'état de réponse HTTP indiquant que la ressource demandée a été temporairement déplacée vers un URI différent. Étant donné que l'emplacement ou la directive de redirection actuelle peut être modifiée à l'avenir, un client qui reçoit un code de réponse 302 Found doit continuer à utiliser l'URI d'origine pour les demandes futures.

Une réponse HTTP avec ce code d'état fournira en outre une URL dans le champ d'en-tête Location. Il s'agit d'une invitation à l'agent utilisateur (par exemple un navigateur Web) à faire une deuxième requête, sinon identique, à la nouvelle URL spécifiée dans le champ de localisation. Le résultat final est une redirection vers la nouvelle URL.

Sourabh Bhavsar
la source
0

Pour tous ceux qui pourraient être curieux de connaître la dénomination, je vais simplement ajouter qu'elle s'appelle probablement "Trouvé" car la ressource principale (par exemple, une page Web privée) que l'utilisateur a l'intention de recevoir n'est pas disponible à ce moment-là (par exemple, l'utilisateur n'a pas encore prouvé son identité), donc à la place, le serveur a trouvé une nouvelle ressource que l'utilisateur peut recevoir (qui est une page de connexion dans le cas d'utilisation le plus courant).

De plus, c'est "se perdre et se retrouver" à la manière de cache-cache, ce qui signifie qu'une ressource perdue sous un statut 302 n'est perdue que temporairement , elle n'est pas censée être perdue pour toujours (à moins qu'un joueur n'ait de mauvaises intentions;)).

aderchox
la source