Upgrade header
Der HTTP-Upgrade-Request-Header und Response-Header kann verwendet werden, um eine bereits etablierte Client/Server-Verbindung auf ein anderes Protokoll (über dasselbe Transportprotokoll) aufzurüsten. Zum Beispiel kann ein Client eine Verbindung von HTTP/1.1 auf HTTP/2 oder eine HTTP(S)-Verbindung auf eine WebSocket-Verbindung aufrüsten.
Warnung: HTTP/2 verbietet ausdrücklich die Verwendung dieses Mechanismus und Headers; er ist spezifisch für HTTP/1.1.
| Header-Typ | Request-Header, Response-Header |
|---|---|
| Verbotener Request-Header | Ja |
Syntax
Upgrade: <protocol>[/<protocol_version>]
Upgrade: <protocol>[/<protocol_version>], …, <protocolN>[/<protocol_versionN>]
Anweisungen
<protocol>-
Protokolle werden kommagetrennt in absteigender Prioritätsreihenfolge aufgelistet.
<protocol_version>Optional-
Eine optionale Protokollversion kann angegeben werden, der ein
/Schrägstrich vorangestellt ist.
Beschreibung
Das Upgrade-Header-Feld kann von Clients verwendet werden, um einen Server einzuladen, zu einem (oder mehreren) der aufgelisteten Protokolle in absteigender Präferenzreihenfolge zu wechseln. Zum Beispiel kann der Client eine GET-Anfrage senden, wie gezeigt, und die bevorzugten Protokolle auflisten, 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 vom Typ upgrade muss immer 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 aufrüsten möchte, muss er:
-
Einen
101 Switching Protocols-Antwortstatus zurücksenden mit einemUpgrade-Header, der die Protokolle angibt, zu 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 zu einem 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 er die Anfrage nicht mit dem aktuellen Protokoll ausführen wird, dies aber möglicherweise tut, wenn das Protokoll geändert wird. Der Client kann dann einen Protokollwechsel unter Verwendung des oben beschriebenen Prozesses anfordern.
Mehr Details und Beispiele finden Sie im Thema Mechanismus zum Protokollwechsel.
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
Aufrüstung zu WebSocket
Dies ist eine häufige Kombination von Headers, um mit der Aufrüstung einer HTTP-Verbindung zu WebSockets zu beginnen. Siehe Aufrüsten zu einer WebSocket-Verbindung für weitere Informationen.
Connection: Upgrade
Upgrade: websocket
Spezifikationen
| Spezifikation |
|---|
| HTTP Semantics> # field.upgrade> |
| HTTP Semantics> # status.426> |
| HTTP/2> # informational-responses> |