HTTP Sec-WebSocket-Version Header

Der HTTP-Header Sec-WebSocket-Version ist ein Request- und Response-Header für WebSocket-Protocol-Version-Negotiation nach RFC 6455. Client sendet gewünschte Version (typisch 13), Server antwortet bei Inkompatibilität mit unterstützten Versionen. Aktueller Standard ist Version 13.

Typ

Request-Header, Response-Header

Syntax

Der Header gibt die Protocol-Version als numerischen Wert an.

http
Sec-WebSocket-Version: 13
Sec-WebSocket-Version: 13, 8, 7

Direktiven

Die Direktiven definieren die WebSocket-Protocol-Version nach RFC 6455.

13
Aktuelle und finale Version des WebSocket-Protocols nach RFC 6455. Alle modernen Browser und Server verwenden Version 13.
8
Draft hybi-10 Version. Obsolete, nur in älteren Implementierungen. Sollte nicht mehr verwendet werden.
7
Draft hybi-07 Version. Legacy, nicht mehr unterstützt in aktuellen Browsern.
Response Format
Server sendet kommagetrennte Liste unterstützter Versionen bei 426 Upgrade Required Response wenn Client-Version nicht unterstützt wird.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Sec-WebSocket-Version-Header.

Beispiel 1 Standard Version 13 Handshake

http
GET /chat HTTP/1.1
Host: websocket.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 sendet Version 13, Server akzeptiert ohne explizite Version in Response. Implizite Akzeptanz der Client-Version.

Beispiel 2 Server unterstuetzt Client Version nicht

http
GET /ws HTTP/1.1
Sec-WebSocket-Version: 7

HTTP/1.1 426 Upgrade Required
Sec-WebSocket-Version: 13, 8
Content-Type: text/plain

WebSocket version 7 not supported. Please use version 13.

Legacy-Client sendet veraltete Version 7, Server lehnt ab mit 426 und listet unterstützte Versionen. Client muss Retry mit akzeptierter Version.

Beispiel 3 Version Mismatch Recovery

http
GET /realtime HTTP/1.1
Sec-WebSocket-Version: 8

HTTP/1.1 426 Upgrade Required
Sec-WebSocket-Version: 13

<!-- Client retries with version 13 -->
GET /realtime HTTP/1.1
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols

Client versucht zunächst Draft-Version 8, erhält 426, retried automatisch mit Server-supportierter Version 13.

Version Negotiation Flow

WebSocket Version Negotiation Ablauf

Vorteile für die Systemarchitektur

  • Protocol Evolution: Version-Field ermöglicht zukünftige WebSocket-Upgrades ohne Breaking Compatibility mit existierenden Deployments
  • Graceful Degradation: Clients können auf ältere Versionen fallbacken wenn Server neuste Version nicht unterstützt (rare Scenario)
  • Clear Error Signaling: 426 Status Code mit unterstützten Versionen erlaubt automatische Version-Negotiation ohne Manual Intervention

Spezifikation

RFC 6455, Section 4.4 – WebSocket Protocol https://www.rfc-editor.org/rfc/rfc6455.html#section-4.4

Weitere Spezifikationen

Sec-WebSocket-Accept Header, Sec-WebSocket-Protocol Header