Upgrade
Der HTTP Upgrade
[Anforderungs]-(/de/docs/Glossary/request_header) und Antwort-Header kann verwendet werden, um eine bereits etablierte Client/Server-Verbindung auf ein anderes Protokoll (über dasselbe Transportprotokoll) zu aktualisieren.
Beispielsweise kann ein Client ihn verwenden, um eine Verbindung von HTTP/1.1 auf HTTP/2 oder eine HTTP(S)-Verbindung auf eine WebSocket-Verbindung aufzurüsten.
Warnung: HTTP/2 verbietet ausdrücklich die Verwendung dieses Mechanismus und Headers; er ist spezifisch für HTTP/1.1.
Header-Typ | Anforderungs-Header, Antwort-Header |
---|---|
Verbotener Anforderungs-Header | Ja |
Syntax
Eine durch Kommas getrennte Liste von einem oder mehreren Protokollen:
Upgrade: <protocol>[/<protocol_version>]
Upgrade: <protocol>[/<protocol_version>], …, <protocolN>[/<protocol_versionN>]
Direktiven
<protocol>
-
Protokolle werden aufgelistet, durch Kommas getrennt, in absteigender Präferenzreihenfolge.
<protocol_version>
Optional-
Eine optionale Protokollversion kann mit einem
/
Schrägstrich vorangestellt werden.
Beschreibung
Das Upgrade
-Header-Feld kann von Clients verwendet werden, um einen Server einzuladen, zu einem (oder mehreren) der aufgelisteten Protokolle zu wechseln, in absteigender Präferenzreihenfolge.
Zum Beispiel könnte der Client eine GET
-Anfrage senden, wie gezeigt, mit den aufgelisteten bevorzugten Protokollen, zu denen gewechselt werden soll (in diesem Fall example/1
und foo/2
):
GET /index.html HTTP/1.1
Host: www.example.com
Connection: upgrade
Upgrade: example/1, foo/2
Hinweis:
Der Connection
-Header mit dem Typ upgrade
muss immer zusammen mit dem Upgrade
-Header gesendet werden.
Der Server kann die Anfrage aus beliebigem Grund ignorieren, in diesem Fall sollte er antworten, als ob der Upgrade
-Header nicht gesendet worden wäre (zum Beispiel mit einem 200 OK
).
Wenn der Server die Verbindung upgraden wird, muss er:
-
Einen
101 Switching Protocols
-Antwortstatus mit einemUpgrade
-Header zurücksenden, der das/die Protokoll(e) angibt, zu dem/denen gewechselt wird. Zum Beispiel:httpHTTP/1.1 101 Switching Protocols Upgrade: foo/2 Connection: Upgrade
-
Eine Antwort auf die ursprüngliche Anfrage unter Verwendung des neuen Protokolls senden (der Server darf nur auf ein Protokoll wechseln, mit dem er die ursprüngliche Anfrage abschließen kann).
Ein Server kann den Header auch als Teil einer 426
Upgrade Required
-Antwort senden, um anzuzeigen, dass der Server die Anfrage nicht mit dem aktuellen Protokoll ausführen wird, dies aber möglicherweise tun könnte, wenn das Protokoll geändert wird. Der Client kann dann einen Protokollwechsel anhand des oben beschriebenen Prozesses anfordern.
Weitere Details und Beispiele finden Sie im Thema Protokoll-Upgrade-Mechanismus.
Beispiele
Upgrade-Header mit mehreren Protokollen
Die folgende Anfrage listet mehrere Protokolle in absteigender Präferenz auf:
Connection: upgrade
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Auf WebSocket upgraden
Dies ist eine gebräuchliche Kombination von Headers, um mit dem Upgrade einer HTTP-Verbindung auf WebSockets zu beginnen. Weitere Informationen finden Sie unter Upgrade zu einer WebSocket-Verbindung.
Connection: Upgrade
Upgrade: websocket
Spezifikationen
Specification |
---|
HTTP Semantics # field.upgrade |
HTTP Semantics # status.426 |
HTTP/2 # informational-responses |
Browser-Kompatibilität
BCD tables only load in the browser