Sec-WebSocket-Key

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 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
The WebSocket Protocol
# section-11.3.1

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Sec-WebSocket-Key

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch