HTTP Sec-WebSocket-Accept Header

Der HTTP-Header Sec-WebSocket-Accept ist ein Response-Header im WebSocket-Handshake, der vom Server gesendet wird um den Upgrade zu WebSocket-Protocol zu bestätigen. Er enthält einen SHA-1-Hash des Client-gesendeten Sec-WebSocket-Key kombiniert mit einer Magic-GUID nach RFC 6455.

Typ

Response-Header

Syntax

Der Header gibt den Base64-kodierten SHA-1-Hash als String an.

http
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Direktiven

Die Direktiven definieren den kryptographischen Akzeptanz-Token für WebSocket-Upgrade.

<hash-value>
Base64-kodierter SHA-1-Hash von Sec-WebSocket-Key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11". Der Hash beweist, dass Server WebSocket-Protocol versteht und Request nicht als regulärer HTTP-Request misinterpretiert.
Magic GUID
Die konstante GUID 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 verhindert, dass Caching-Proxies cached Responses wiederverwenden.

Beispiele

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

Beispiel 1 Erfolgreicher WebSocket 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=

Server berechnet SHA-1 von Key plus Magic GUID, sendet Base64-Hash zurück. Client validiert Hash, etabliert bidirektionale WebSocket-Connection.

Beispiel 2 Ungueltige Hash Berechnung

http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: InvalidHashValue==

<!-- Client closes connection due to invalid hash -->

Client empfängt ungültigen Accept-Hash, validiert fehl und schließt Connection sofort zur Verhinderung von Protocol-Confusion-Attacks.

Beispiel 3 Server lehnt WebSocket ab

http
GET /api/realtime HTTP/1.1
Host: app.example.com
Upgrade: websocket
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

HTTP/1.1 400 Bad Request
Content-Type: text/plain

WebSocket not supported on this endpoint

Server unterstützt kein WebSocket auf diesem Endpoint, sendet 400 statt 101 Upgrade. Kein Sec-WebSocket-Accept Header vorhanden.

WebSocket Handshake Flow

WebSocket Handshake mit Sec-WebSocket-Accept

Vorteile für die Systemarchitektur

  • Protocol Security: Hash-Validation verhindert Protocol-Confusion-Attacks wo Non-WebSocket-Server fälschlicherweise Upgrade akzeptieren
  • Proxy-Safe: Magic GUID stellt sicher, dass Caching-Proxies keine Handshake-Responses cachen und wiederverwenden können
  • Connection Integrity: Kryptographische Bindung zwischen Request und Response garantiert, dass gleicher Client Response erhält

Spezifikation

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

Weitere Spezifikationen

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