Was bedeutet HTTP / 1.1 302 genau?

120

In einem Artikel, den ich einmal gelesen habe, heißt es, dass es bedeutet, zu springen (von einer URI zur anderen), aber ich habe diese "302" entdeckt, selbst wenn es überhaupt kein Springen gab!

Oh mein Gott
quelle
1
Hier in der Dokumentation zu wc3.org finden Sie möglicherweise einige gute Informationen dazu .
Copas
2
Achten Sie genau darauf: example.com example.com und example.com unterscheiden sich logisch, und eine Site, auf die über eine einzelne URL zugegriffen werden soll, wird möglicherweise von einer zur anderen umgeleitet, um dies zu erreichen. Natürlich sind 302 Weiterleitungen eine schlechte Wahl dafür ... aber Sie haben vielleicht ähnlich subtile Variationen gesehen.
Shog9
Verweisen Sie auf diese Website ( Hostingpill.com/http-302-error )
Virusarthak

Antworten:

74

Eine 302-Umleitung bedeutet, dass die Seite vorübergehend verschoben wurde, während eine 301 bedeutet, dass sie dauerhaft verschoben wurde.

301s sind gut für den SEO-Wert, 302s nicht, weil 301s Kunden anweisen, den Wert der ursprünglichen URL zu vergessen, während 302s den Wert des Originals beibehalten und somit den Wert möglicherweise reduzieren können, indem zwei logisch unterschiedliche URLs erstellt werden Jeder produziert den gleichen Inhalt (Suchmaschinen betrachten sie als unterschiedliche Duplikate und nicht als einzelne Ressource mit zwei Namen).

CodeMonkey1313
quelle
57

Diese Frage wurde vor langer Zeit gestellt, als der RFC 2616 noch herumhing. Einige Antworten auf diese Frage basieren auf einem solchen Dokument, das heutzutage nicht mehr relevant ist. Zitat von Mark Nottingham , der zum Zeitpunkt des Schreibens den Vorsitz der IETF-Arbeitsgruppen HTTP und QUIC innehat:

Verwenden Sie nicht RFC2616 . Löschen Sie es von Ihren Festplatten, Lesezeichen und brennen Sie alle ausgedruckten Kopien (oder recyceln Sie sie verantwortungsvoll).

Der alte RFC 2616 wurde durch die folgenden Dokumente ersetzt, die zusammen das HTTP / 1.1-Protokoll definieren:

Daher möchte ich eine Antwort basierend auf dem RFC 7231 geben, der die aktuelle Referenz für HTTP / 1.1-Statuscodes ist.

Der 302Statuscode

Eine Antwort mit 302ist eine übliche Methode zur Durchführung einer URL-Umleitung. Zusammen mit dem 302Statuscode sollte die Antwort einen LocationHeader mit einem anderen URI enthalten. Ein solcher Header wird vom Benutzeragenten analysiert und führt dann die Umleitung durch:


Umleitungsbeispiel


Webbrowser können sich in der nachfolgenden Anforderung von POSTbis ändern GET. Wenn dieses Verhalten unerwünscht ist, 307kann stattdessen der Statuscode (Temporäre Umleitung) verwendet werden.

So wird der 302Statuscode im RFC 7231 definiert :

6.4.3. 302 gefunden

Der 302Statuscode (Gefunden) gibt an, dass sich die Zielressource vorübergehend unter einem anderen URI befindet. Da die Umleitung gelegentlich geändert werden kann, sollte der Client den effektiven Anforderungs-URI weiterhin für zukünftige Anforderungen verwenden.

Der Server sollte ein LocationHeader-Feld in der Antwort generieren, das eine URI-Referenz für die verschiedenen URI enthält. Der Benutzeragent KANN den Feldwert Locationfür die automatische Umleitung verwenden. Die Antwortnutzlast des Servers enthält normalerweise eine kurze Hypertextnotiz mit einem Hyperlink zu den verschiedenen URIs.

Hinweis: Aus historischen Gründen kann ein Benutzeragent die Anforderungsmethode für die nachfolgende Anforderung von POSTauf ändern GET. Wenn dieses Verhalten unerwünscht ist, 307kann stattdessen der Statuscode (Temporäre Umleitung) verwendet werden.

Laut MDN-Webdokumenten von Mozilla ist ein typischer Anwendungsfall für 302:

Die Webseite ist aus unvorhergesehenen Gründen vorübergehend nicht verfügbar. Auf diese Weise aktualisieren Suchmaschinen ihre Links nicht.

Andere Statuscodes für die Umleitung

Der RFC 7231 definiert die folgenden Statuscodes für die Umleitung:

  • 301 (Dauerhaft umgezogen)
  • 302 (Gefunden)
  • 307 (Temporäre Weiterleitung)

Der RFC 7238 wurde erstellt, um einen anderen Statuscode für die Umleitung zu definieren:

  • 308 (Permanente Weiterleitung)

Weitere Einzelheiten finden Sie in dieser Antwort .

Cassiomolin
quelle
2
Nun, mein Schmerz von zwei Tagen ist vorbei für dich ( LocationHeader war das, was mir geholfen hat). Es stellte sich heraus, dass ich einen Dienst anrief httpund sie zogen zu https. Alles, was ich als Antwort erhielt 302, war , als ich hier die LocationKopfzeile las , sah ich den http/httpsUnterschied. Danke dir!
Eugene
Ich habe den gleichen Grund für diesen Fehler. Mein Javascript zeigte auf den falschen https-Speicherort und so schlug die Umleitung fehl. Danke für den Kommentar.
Max
25

Eine einfache Sichtweise auf HTTP 301 vs. 302-Weiterleitungen ist:

Angenommen, Sie haben ein Lesezeichen für " http://sample.com/sample ". Sie verwenden einen Browser, um dorthin zu gelangen.

Eine 302-Umleitung zu einer anderen URL an dieser Stelle würde bedeuten, dass Sie Ihr Lesezeichen auf " http://sample.com/sample " belassen sollten . Dies liegt daran, dass sich die Ziel-URL in Zukunft möglicherweise ändert.

Eine 301-Umleitung zu einer anderen URL würde bedeuten, dass sich Ihr Lesezeichen so ändern sollte, dass es auf die neue URL verweist, da es sich um eine permanente Umleitung handelt.

Roter Bart
quelle
9

Aus RFC 2616 (der Hypertext Transfer Protocol-Spezifikation) :

10.3.3 302 Gefunden

   Die angeforderte Ressource befindet sich vorübergehend unter einem anderen URI.
   Da die Umleitung gelegentlich geändert werden kann, SOLLTE der Client
   Verwenden Sie den Request-URI weiterhin für zukünftige Anforderungen. Diese Antwort
   kann nur zwischengespeichert werden, wenn dies durch einen Cache-Control- oder Expires-Header angezeigt wird
   Feld.

   Die temporäre URI sollte durch das Feld Standort in der angegeben werden
   Antwort. Sofern die Anforderungsmethode nicht HEAD war, ist die Entität der
   Antwort SOLLTE eine kurze Hypertext-Notiz mit einem Hyperlink zu enthalten
   die neuen URI (s).

Quelle:

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

Reginaldo
quelle
6

Aus Wikipedia :

Der HTTP-Antwortstatuscode 302 Found ist die häufigste Methode zum Durchführen einer Umleitung. Es ist ein Beispiel für eine industrielle Praxis, die dem Standard widerspricht.

Paul Sonier
quelle
5

Gemäß den http-Statuscode-Definitionen zeigt ein 302 eine (vorübergehende) Umleitung an. "Die angeforderte Ressource befindet sich vorübergehend unter einem anderen URI."

Mitchell McKenna
quelle
5

302 ist eine Antwort, die eine Änderung des Ressourcenorts anzeigt - "Gefunden".

Die URL, unter der sich die Ressource jetzt befinden sollte, sollte sich im Header der Antwort "Standort" befinden.

Der "Sprung" sollte vom anfordernden Client ausgeführt werden (stellen Sie eine neue Anforderung an die Ressourcen-URL im Feld "Header der Antwortposition").

Demi
quelle
5

In Bezug auf SEO sind 301 und 302 beide gut, es hängt von der Situation ab,

Wenn nur eine Version zurückgegeben werden kann (dh die andere leitet darauf um), ist das großartig! Dieses Verhalten ist vorteilhaft, da es doppelte Inhalte reduziert. Im speziellen Fall von Weiterleitungen zu nachgestellten Schrägstrich-URLs wird in unseren Suchergebnissen wahrscheinlich die Version der URL mit dem 200-Antwortcode (meistens die nachfolgende Schrägstrich-URL) angezeigt - unabhängig davon, ob die Weiterleitung 301 oder 302 war.

Sunil
quelle
3

Der HTTP-Code 302 dient zur Umleitung unter http://en.wikipedia.org/wiki/HTTP_302 .

Es weist das Durchsuchen einer Seite an, woanders hinzugehen und eine andere Seite zu laden. Seine Verwendung ist sehr verbreitet.

Sei gewarnt
quelle
1

Gemäß 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
quelle
0
  • Der Code 302 zeigt eine vorübergehende Umleitung an .
  • Eine der bemerkenswertesten Eigenschaften, die es von einer 301-Weiterleitung unterscheidet, ist, dass bei 302-Weiterleitungen die Stärke der SEO nicht auf eine neue URL übertragen wird.
  • Dies liegt daran, dass diese Umleitung so konzipiert wurde, dass sie verwendet werden kann, wenn Inhalte auf eine Seite umgeleitet werden müssen, die nicht die endgültige ist. Sobald die Umleitung beseitigt ist, hat die ursprüngliche Seite ihre Position in der Google-Suchmaschine nicht verloren.

BEISPIEL: - Obwohl es nicht sehr häufig vorkommt, dass wir eine 302-Umleitung benötigen, kann diese Option in einigen Fällen sehr nützlich sein. Dies sind die häufigsten Fälle:

  • Wenn wir feststellen, dass eine Seite unangemessenen Inhalt enthält. Während wir das Problem lösen, können wir den Benutzer auf eine andere Seite umleiten, die möglicherweise von Interesse ist.
  • Für den Fall, dass ein Angriff auf unsere Website die Wiederherstellung einer der Seiten erfordert, kann diese Weiterleitung uns helfen, die Häufigkeit zu minimieren.

Eine Weiterleitung 302 ist ein Code, der Besuchern einer bestimmten URL mitteilt, dass die Seite vorübergehend verschoben wurde, und sie direkt an den neuen Speicherort weiterleitet.

  • Mit anderen Worten, die Umleitung 302 wird aktiviert, wenn Google-Roboter oder andere Suchmaschinen das Laden einer bestimmten Seite anfordern. In diesem Moment gibt der Server dank dieser Umleitung eine automatische Antwort zurück, die eine neue URL angibt.

  • Auf diese Weise werden Fehler und Belästigungen sowohl für Suchmaschinen als auch für Benutzer vermieden und eine reibungslose Navigation gewährleistet.

Weitere Einzelheiten finden Sie in diesem Artikel .

virusarthak
quelle
0

Ein 302-Statuscode ist ein HTTP-Antwortstatuscode, der angibt, dass die angeforderte Ressource vorübergehend in einen anderen URI verschoben wurde. Da der Standort oder die aktuelle Umleitungsanweisung möglicherweise in Zukunft geändert wird, sollte ein Client, der einen 302 Found-Antwortcode erhält, weiterhin den ursprünglichen URI für zukünftige Anforderungen verwenden.

Eine HTTP-Antwort mit diesem Statuscode liefert zusätzlich eine URL im Headerfeld Location. Dies ist eine Einladung an den Benutzeragenten (z. B. einen Webbrowser), eine zweite, ansonsten identische Anfrage an die im Standortfeld angegebene neue URL zu stellen. Das Endergebnis ist eine Umleitung zur neuen URL.

Sourabh Bhavsar
quelle
0

Für alle, die neugierig auf die Benennung sind, möchte ich nur hinzufügen, dass sie wahrscheinlich "Gefunden" heißt, da die Hauptressource (z. B. eine private Webseite), die der Benutzer erhalten möchte, derzeit nicht verfügbar ist (z. der Benutzer ihre Identität noch) nicht bewiesen, so dass anstelle der Server gefunden eine neue Ressource, die der Benutzer empfangen kann (die eine Login - Seite in dem häufigste Anwendungsfall ist).

Außerdem geht es beim Verstecken "verloren und gefunden", was bedeutet, dass eine verlorene Ressource unter dem Status 302 nur vorübergehend verloren geht und nicht für immer verloren gehen soll (es sei denn, ein Spieler hat schlechte Absichten;)).

Aderchox
quelle