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
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.
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/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