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 Juli 2015.
Der HTTP Sec-WebSocket-Key Request-Header wird im WebSocket-Eröffnungshandshake verwendet, damit ein Client (User-Agent) bestätigen kann, dass er "wirklich" möchte, dass ein HTTP-Client zu einem WebSocket aufgerüstet wird.
Der Wert des Schlüssels wird mit einem im 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 automatisch von User-Agents 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 der angegebenen Schlüsselwert basierend berechnet wurde.
Der User-Agent kann diesen dann validieren, bevor er die Verbindung bestätigt.
| Header-Typ | Request-Header |
|---|---|
| Verbotener Request-Header | Ja (Sec- Präfix) |
Syntax
Sec-WebSocket-Key: <key>
Direktiven
Beispiele
>WebSocket-Eröffnungshandshake
Der Client wird ein WebSocket-Handshake mit einer Anfrage wie der folgenden initiieren.
Beachten Sie, dass dies als HTTP GET-Anfrage beginnt (HTTP/1.1 oder höher), zusätzlich zu Sec-WebSocket-Key enthält die Anfrage den Upgrade-Header, der die Absicht anzeigen soll, von HTTP zu einer WebSocket-Verbindung zu wechseln.
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 in der Anfrage berechnet wurde, und die Absicht bestätigen, 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> |