Sec-WebSocket-Key
Der Sec-WebSocket-Key HTTP-Request-Header wird im WebSocket-Eröffnungs-Handshake verwendet, um einem Client (Nutzer-Agent) zu ermöglichen, zu bestätigen, dass er „wirklich möchte“, dass ein HTTP-Client zu einem WebSocket hochgestuft wird.
Der Wert des Schlüssels wird mit einem Algorithmus berechnet, der in der WebSocket-Spezifikation definiert ist, 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 Nutzer-Agenten 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 basierend auf dem angegebenen Schlüsselwert berechnet wurde. Der Nutzer-Agent kann diesen dann vor Bestätigung der Verbindung validieren.
Header-Typ | Request-Header |
---|---|
Verbotener Header-Name | ja |
Syntax
Sec-WebSocket-Key: <key>
Direktiven
- <key>
-
Der Schlüssel für diese Anforderung zur Aktualisierung. Dies ist ein zufällig ausgewählter 16-Byte-Nonce, der base64-kodiert und isomorph kodiert wurde. Der Nutzer-Agent fügt diesen hinzu, wenn er die WebSocket-Verbindung initiiert.
Beispiele
Der Client wird einen WebSocket-Handshake mit einer Anfrage wie der folgenden initiieren. Beachten Sie, dass dies als HTTP-GET
-Anfrage (HTTP/1.1 oder höher) beginnt. Zusätzlich zu Sec-WebSocket-Key
enthält die Anfrage den Upgrade
-Header, der die Absicht signalisiert, von HTTP zu einem Websocket 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 in der Anfrage berechnet wird und die Absicht bestätigt, die Verbindung zu einem Websocket 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