Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Upgrade header

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Der HTTP-Upgrade-Request-Header und -Response-Header können verwendet werden, um eine bereits bestehende Verbindung zwischen Client und Server auf ein anderes Protokoll umzustellen (unter Verwendung desselben Transportprotokolls). Beispielsweise kann ein Client damit eine Verbindung von HTTP/1.1 auf HTTP/2 oder eine HTTP(S)-Verbindung auf eine WebSocket-Verbindung umstellen.

Warnung: HTTP/2 untersagt die Verwendung dieses Mechanismus und dieses Headers ausdrücklich; sie sind spezifisch für HTTP/1.1.

Header-Typ Request-Header, Response-Header
Verbotener Request-Header Ja

Syntax

http
Upgrade: <protocol>[/<protocol_version>]
Upgrade: <protocol>[/<protocol_version>], …, <protocolN>[/<protocol_versionN>]

Direktiven

<protocol>

Protokolle werden durch Kommas getrennt und in absteigender Reihenfolge ihrer Präferenz aufgeführt.

<protocol_version> Optional

Optional kann eine Protokollversion angegeben werden, der ein Schrägstrich / vorangestellt ist.

Beschreibung

Clients können den Upgrade-Header verwenden, um einen Server aufzufordern, zu einem oder mehreren der aufgeführten Protokolle zu wechseln, geordnet nach absteigender Präferenz. Beispielsweise könnte der Client eine GET-Anfrage wie gezeigt senden und dabei die bevorzugten Protokolle für den Wechsel angeben (in diesem Fall example/1 und foo/2):

http
GET /index.html HTTP/1.1
Host: www.example.com
Connection: upgrade
Upgrade: example/1, foo/2

Hinweis: Der Connection-Header mit dem Wert upgrade muss immer zusammen mit dem Upgrade-Header gesendet werden.

Der Server kann die Anfrage aus beliebigem Grund ignorieren. In diesem Fall sollte er so antworten, als wäre der Upgrade-Header nicht gesendet worden (beispielsweise mit einem 200 OK). Wenn der Server die Verbindung umstellt, muss er:

  1. Einen 101 Switching Protocols-Antwortstatus mit einem Upgrade-Header zurücksenden, der das Protokoll bzw. die Protokolle angibt, zu denen gewechselt wird. Zum Beispiel:

    http
    HTTP/1.1 101 Switching Protocols
    Upgrade: foo/2
    Connection: Upgrade
    
  2. Eine Antwort auf die ursprüngliche Anfrage unter Verwendung des neuen Protokolls senden (der Server darf nur zu einem Protokoll wechseln, mit dem er die ursprüngliche Anfrage abschließen kann).

Ein Server kann den Header auch als Teil einer 426-Antwort (Upgrade Required) senden, um anzugeben, dass er die Anfrage mit dem aktuellen Protokoll nicht ausführt, dies nach einem Protokollwechsel aber möglicherweise tun würde. Der Client kann dann mithilfe des oben beschriebenen Verfahrens einen Protokollwechsel anfordern.

Weitere Einzelheiten und Beispiele finden Sie unter Mechanismus zum Protokollwechsel.

Beispiele

Upgrade-Header mit mehreren Protokollen

Die folgende Anfrage führt mehrere Protokolle in absteigender Reihenfolge ihrer Präferenz auf:

http
Connection: upgrade
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

Wechsel zu WebSocket

Diese Kombination von Headern wird häufig verwendet, um den Wechsel einer HTTP-Verbindung zu WebSocket einzuleiten. Weitere Informationen finden Sie unter Wechsel zu einer WebSocket-Verbindung.

http
Connection: Upgrade
Upgrade: websocket

Spezifikationen

Spezifikation
HTTP Semantics
# field.upgrade
HTTP Semantics
# status.426
HTTP/2
# informational-responses

Browser-Kompatibilität

Siehe auch