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 Anforderungsheader wird im WebSocket Eröffnungs-Handshake verwendet, um es einem Client (User-Agent) zu ermöglichen, zu bestätigen, dass er "wirklich" möchte, dass ein HTTP-Client zu einem WebSocket aufgewertet wird.
Der Wert des Schlüssels wird unter Verwendung eines Algorithmus berechnet, der in der WebSocket-Spezifikation definiert ist, wodurch keine Sicherheit geboten wird. Stattdessen hilft es, zu verhindern, dass Nicht-WebSocket-Clients versehentlich oder durch Fehlgebrauch eine WebSocket-Verbindung anfordern.
Dieser Header wird automatisch von User-Agents hinzugefügt, wenn ein Skript einen WebSocket öffnet; er kann nicht durch die Methoden fetch()
oder XMLHttpRequest.setRequestHeader()
hinzugefügt werden.
Der Sec-WebSocket-Accept
Antwort-Header des Servers sollte einen Wert enthalten, der basierend auf dem angegebenen Schlüsselwert berechnet wurde. Der User-Agent kann dies dann validieren, bevor die Verbindung bestätigt wird.
Header-Typ | Anforderungsheader |
---|---|
Verbotener Anforderungsheader | Ja (Sec- Präfix) |
Syntax
Sec-WebSocket-Key: <key>
Direktiven
<key>
-
Der Schlüssel für diese Upgrade-Anforderung. Dies ist ein zufällig ausgewählter 16-Byte-Nonce, der base64-kodiert und isomorph kodiert ist. Der User-Agent fügt dies hinzu, wenn die WebSocket-Verbindung initiiert wird.
Beispiele
WebSocket-Eröffnungs-Handshake
Der Client initiiert einen WebSocket-Handshake mit einer Anfrage wie der folgenden.
Beachten Sie, dass dies als HTTP GET
-Anfrage (HTTP/1.1 oder später) beginnt; zusätzlich zu Sec-WebSocket-Key
enthält die Anfrage den Upgrade
Header, der die Absicht signalisiert, 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 des Servers sollte den Sec-WebSocket-Accept
Header mit einem Wert enthalten, der aus dem Sec-WebSocket-Key
Header der Anfrage berechnet wurde und die Absicht bestätigt, 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 |
---|
The WebSocket Protocol # section-11.3.1 |
Browser-Kompatibilität
BCD tables only load in the browser