Sec-WebSocket-Key header

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der HTTP Sec-WebSocket-Key Request-Header wird im WebSocket Eröffnungs-Handshake verwendet, um es einem Client (Benutzeragenten) zu ermöglichen, zu bestätigen, dass er "wirklich möchte", dass ein HTTP-Client auf einen WebSocket hochgestuft wird.

Der Wert des Schlüssels wird mit einem Algorithmus berechnet, der in der WebSocket-Spezifikation definiert ist, daher bietet dies keine Sicherheit. Stattdessen hilft es, zu verhindern, dass Nicht-WebSocket-Clients versehentlich oder durch Missbrauch eine WebSocket-Verbindung anfordern.

Dieser Header wird automatisch von Benutzeragenten hinzugefügt, wenn ein Skript einen WebSocket öffnet; er kann nicht mit den Methoden fetch() oder XMLHttpRequest.setRequestHeader() hinzugefügt werden.

Der Server-Antwort-Header Sec-WebSocket-Accept sollte einen Wert enthalten, der basierend auf dem angegebenen Schlüsselwert berechnet wird. Der Benutzeragent kann dann diesen validieren, bevor die Verbindung bestätigt wird.

Header-Typ Request-Header
Unzulässiger Request-Header Ja (Sec- Präfix)

Syntax

http
Sec-WebSocket-Key: <key>

Direktiven

<key>

Der Schlüssel für diese Anforderung zum Hochstufen. Dies ist eine zufällig ausgewählte 16-Byte-Nonce, die base64-kodiert und isomorph kodiert wurde. Der Benutzeragent fügt diesen hinzu, wenn die WebSocket-Verbindung initiiert wird.

Beispiele

WebSocket-Eröffnungs-Handshake

Der Client wird einen WebSocket-Handshake mit einer Anfrage wie der folgenden initiieren. Beachten Sie, dass dies als HTTP GET-Anfrage (HTTP/1.1 oder höher) beginnt; zusätzlich zu Sec-WebSocket-Key enthält die Anfrage den Header Upgrade, der die Absicht angibt, von HTTP auf eine WebSocket-Verbindung hochzustufen.

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

Die Antwort vom Server sollte den Sec-WebSocket-Accept-Header mit einem Wert enthalten, der aus dem Sec-WebSocket-Key-Header in der Anfrage berechnet wurde und die Absicht bestätigt, die Verbindung auf eine WebSocket-Verbindung hochzustufen:

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

Spezifikationen

Specification
The WebSocket Protocol
# section-11.3.1

Browser-Kompatibilität

Siehe auch