302 Found
Verwendung
Erhält der Client den Statuscode 302 Found, versteht er, dass die angeforderte Ressource vorübergehend verschoben wurde. Eine zweite Anfrage ruft die Ressource am neuen Ort ab. Das ist einfacher als bei 301, weil vom Client nicht erwartet wird, interne Links zu aktualisieren.
Hinweis
Aus Gründen der Abwärtskompatibilität darf der Client die Anfragemethode bei der Weiterleitung von POST auf GET ändern. Um diese Mehrdeutigkeit zu vermeiden, gibt der Server stattdessen einen anderen Statuscode zurück. Der Statuscode 303 gibt an, dass die Weiterleitung die Methode GET verwenden muss, während der Statuscode 307 die Beibehaltung der ursprünglichen Methode verlangt.
Zu den häufigen Auslösern für 302-Antworten zählen Umstellungen von HTTP auf HTTPS (oft besser mit 301 gelöst), URL-Normalisierung (abschließender Schrägstrich), A/B-Tests, standortbasiertes Routing von Inhalten sowie temporäre Wartungsweiterleitungen.
Hinweis
Eine 302 ist eine erfolgreiche Weiterleitung, kein Fehler. Der Server hat die Ressource gefunden und leitet den Client an den aktuellen Ort. So beheben Sie unerwünschte 302-Weiterleitungen: prüfen Sie, ob die Weiterleitung beabsichtigt ist, wandeln Sie sie bei einer dauerhaften Verschiebung in eine 301 um und kontrollieren Sie die CMS-Einstellungen oder die .htaccess auf unbeabsichtigte Regeln.
Zwischenspeicherbarkeit
Eine 302-Antwort ist standardmäßig nicht zwischenspeicherbar. Anders als 301 und 308 benötigt eine 302 explizite Cache-Control- oder Expires-Header, damit sie von Caches gespeichert wird.
SEO-Auswirkung
Google wertet eine 302 als schwaches Signal dafür, dass das Weiterleitungsziel die bevorzugte URL ist – anders als bei 301, das ein starkes Signal darstellt. Google verarbeitet entweder die Quell- oder die Ziel-URL. Eine dauerhaft bestehende 302 kann mit der Zeit als permanente Weiterleitung behandelt werden; für eine dauerhafte Änderung ist daher eine 301 die bessere Wahl.
Beispiel
Der Client fordert eine vorübergehend verschobene Ressource an. Der Server gibt den neuen Ort an und liefert eine passende Nachricht für die Anzeige auf Client-Seite.
Anfrage
GET /news.html HTTP/1.1
Host: example.com
Antwort
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>
Code-Referenzen
.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