HTTP Upgrade Header

Der HTTP-Header Upgrade ist ein Request- und Response-Header, der Protocol-Switching initiiert oder anbietet. WebSocket-Handshakes und HTTP/2-Upgrades verwenden diesen Header, um von HTTP/1.1 zu anderen Protokollen zu wechseln mit 101 Switching Protocols Response.

Typ

Request-Header, Response-Header

Syntax

Der Header listet angebotene oder akzeptierte Protokolle.

http
Upgrade: websocket
Upgrade: h2c

Direktiven

Die Direktiven definieren Ziel-Protokolle für Switching.

websocket
Wechsel zu WebSocket-Protokoll für bidirektionale Full-Duplex-Kommunikation.
h2c
Wechsel zu HTTP/2 Cleartext (ohne TLS), selten verwendet da HTTP/2 meist über ALPN läuft.
HTTP/2.0
Alternative Notation für HTTP/2 Upgrade-Requests.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Upgrade-Header.

Beispiel 1 WebSocket Handshake

http
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Client initiiert WebSocket-Upgrade, Server akzeptiert mit 101-Response und wechselt Protokoll.

Beispiel 2 HTTP2 Cleartext Upgrade

http
GET / HTTP/1.1
Host: example.com
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings

HTTP/1.1 101 Switching Protocols
Upgrade: h2c
Connection: Upgrade

[HTTP/2 Connection Preface]

Client requestet HTTP/2 Cleartext Upgrade, Server wechselt zu HTTP/2 über bestehendem Connection.

Beispiel 3 Upgrade abgelehnt

http
GET /api HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

HTTP/1.1 200 OK
Content-Type: application/json

{"error": "WebSocket not supported on this endpoint"}

Server lehnt Upgrade ab mit normaler 200-Response, Client bleibt bei HTTP/1.1.

WebSocket Upgrade Flow

WebSocket Upgrade Protokoll-Wechsel

Vorteile für die Systemarchitektur

  • Nahtloser Protocol-Wechsel: Bestehende TCP-Connection wird weiterverwendet ohne neue Verbindung
  • WebSocket-Standardisierung: Einheitlicher Upgrade-Mechanismus für alle Browser und Server
  • Backward Compatibility: Server können Upgrade ablehnen und HTTP/1.1 Response liefern

Spezifikation

RFC 9110, Section 7.8 – HTTP Semantics, Upgrade https://www.rfc-editor.org/rfc/rfc9110.html#name-upgrade RFC 6455 – WebSocket Protocol https://www.rfc-editor.org/rfc/rfc6455.html

Weitere Spezifikationen

Connection Header, HTTP Status 101 - Switching Protocols, Sec-WebSocket-Key Header