HTTPQUERY
Deutsch

307 Temporary Redirect

Verwendung

Der Statuscode 307 Temporary Redirect gibt an, dass die Zielressource unter einer anderen URL verfügbar ist. Der Client stellt eine neue Anfrage an die im Location-Header angegebene URL und darf dabei die Anfragemethode nicht ändern. Das unterscheidet ihn vom Statuscode 302, der es dem Client erlaubt, von POST zu GET zu wechseln.

Ist das gewünschte Verhalten ein Wechsel der Anfragemethode, ist der Statuscode 303 die empfohlene Alternative. Beispielsweise wird für die Weiterleitung einer per POST abgesendeten Formularübermittlung auf eine Bestätigungsseite 303 mit einem nachfolgenden GET verwendet.

Der Client muss exakt dieselbe Methode, dieselben Header und denselben Rumpf an die neue URL wiederholen. Der Server verarbeitet die weitergeleitete Anfrage ganz normal. Da die 307 Temporary Redirect nicht dauerhaft ist, wird erwartet, dass künftige Anfragen die ursprüngliche URL verwenden und die temporäre Änderung erneut prüfen.

Das dauerhafte Gegenstück ist 308: Es bewahrt die Anfragemethode in gleicher Weise, signalisiert aber, dass der Umzug dauerhaft ist und Clients gespeicherte Links aktualisieren.

Die Antwort ist standardmäßig nicht zwischenspeicherbar. Um die Weiterleitung zwischenspeicherbar zu machen, fügen Sie einen Cache-Control- oder Expires-Header hinzu.

Der Statuscode 307 Temporary Redirect dient außerdem als interne Weiterleitung, wenn über den Strict-Transport-Security-Header oder die HSTS-Preload-Liste eine HSTS-Richtlinie deklariert ist. Der Client nutzt den Statuscode für die Weiterleitung von HTTP auf eine sichere Verbindung über HTTPS, ohne den Server zu kontaktieren.

Hinweis

Browser erzeugen in den DevTools einen “307 Internal Redirect”, wenn sie HTTP per HSTS auf HTTPS hochstufen. Diese Weiterleitung geschieht vollständig im Browser, ohne Netzwerkanfrage. Der Header Non-Authoritative-Reason: HSTS erscheint in den DevTools. 307-Weiterleitungsschleifen zwischen HTTP und HTTPS weisen auf widersprüchliche HSTS- und serverseitige Weiterleitungsregeln hin. Stellen Sie sicher, dass der Server nur auf dem HTTP-Port weiterleitet.

Hinweis

303 erzwingt, dass die Folgeanfrage unabhängig von der ursprünglichen Methode GET verwendet, was 303 zum Standard für Weiterleitungen nach einem POST macht. 307 bewahrt die ursprüngliche Methode und den Rumpf. Der Client sendet dasselbe POST/PUT/PATCH erneut an die neue URL.

SEO-Auswirkung

Google wertet eine 307 als schwaches Signal dafür, dass das Weiterleitungsziel die bevorzugte URL ist, anders als 301/308, die starke Signale sind. Google indexiert entweder die Quell- oder die Ziel-URL. Eine dauerhaft bestehen bleibende 307 wird möglicherweise irgendwann als dauerhafte Weiterleitung behandelt; eine dauerhafte Änderung ist daher mit einer 308 besser bedient.

Beispiel

Der Client fordert eine Ressource an, und der Server antwortet mit 307 Temporary Redirect, weil die Ressource an einem anderen Ort verfügbar ist.

Anfrage

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

Antwort

HTTP/1.1 307 Temporary Redirect
Location: http://example.com/breaking/news.html

Code-Referenzen

.NET

HttpStatusCode.TemporaryRedirect

Rust

http::StatusCode::TEMPORARY_REDIRECT

Rails

:temporary_redirect

Go

http.StatusTemporaryRedirect

Symfony

Response::HTTP_TEMPORARY_REDIRECT

Python3.5+

http.HTTPStatus.TEMPORARY_REDIRECT

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_TEMPORARY_REDIRECT

Angular

@angular/common/http/HttpStatusCode.TemporaryRedirect