Sec-WebSocket-Key

Der HTTP Sec-WebSocket-Key Request Header wird im WebSocket Eröffnungs-Handshake verwendet, um einem Client (Benutzeragenten) zu ermöglichen zu bestätigen, dass er "wirklich wünscht", dass ein HTTP-Client zu einem WebSocket aufgerüstet wird.

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

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

Der Sec-WebSocket-Accept Antwortheader des Servers sollte einen Wert enthalten, der auf Basis des angegebenen Schlüsselwerts berechnet wurde. Der Benutzeragent kann dies dann validieren, bevor er die Verbindung bestätigt.

Header-Typ Request Header
Verbotener Header-Name Ja (Sec- Präfix)

Syntax

http
Sec-WebSocket-Key: <key>

Anweisungen

<key>

Der Schlüssel für diese Anforderung zur Aufrüstung. Dies ist ein zufällig ausgewählter 16-Byte-Nonce, der base64-kodiert und isomorph kodiert ist. Der Benutzeragent fügt dies hinzu, wenn die WebSocket-Verbindung initiiert wird.

Beispiele

WebSocket Eröffnungshandshake

Der Client wird ein WebSocket-Handshake mit einer Anforderung wie der folgenden einleiten. Beachten Sie, dass dies als HTTP GET-Anforderung (HTTP/1.1 oder später) beginnt. Zusätzlich zu Sec-WebSocket-Key enthält die Anforderung den Upgrade Header, der die Absicht anzeigt, von HTTP zu einer WebSocket-Verbindung aufzurüsten.

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 Anforderung berechnet wurde, und bestätigt die Absicht, die Verbindung zu einer WebSocket-Verbindung aufzurüsten:

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

Spezifikationen

Specification
Unknown specification
# section-11.3.1

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch