Sec-WebSocket-Extensions
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-Header Sec-WebSocket-Extensions wird bei dem WebSocket Eröffnungs-Handshake verwendet, um eine Protokollerweiterung auszuhandeln, die sowohl vom Client als auch vom Server genutzt wird.
In einer Anfrage gibt der Header eine oder mehrere Erweiterungen an, die die Webanwendung nutzen möchte, in der Reihenfolge der Präferenz. Diese können entweder als mehrere Header hinzugefügt oder als durch Kommas getrennte Werte in einem einzigen Header ergänzt werden.
In einer Antwort kann der Header nur einmal erscheinen, wobei er die vom Server aus den Präferenzen des Clients ausgewählte Erweiterung spezifiziert. Dieser Wert muss die erste Erweiterung sein, die der Server aus der im Anfrage-Header bereitgestellten Liste unterstützt.
Der Anfrage-Header wird automatisch vom Browser basierend auf dessen eigenen Fähigkeiten hinzugefügt und hängt nicht von Parametern ab, die dem Konstruktor übergeben werden, wenn der WebSocket
erstellt wird.
Header-Typ | Anfrage-Header, Antwort-Header |
---|---|
Verbotener Anfrage-Header | Ja (Sec- Präfix) |
Syntax
Anfrage
Sec-WebSocket-Extensions: <extensions>
Antwort
Sec-WebSocket-Extensions: <selected-extension>
Direktiven
<extensions>
-
Eine durch Kommas getrennte Liste von Erweiterungen, um deren Unterstützung gebeten wird (oder für die der Server zustimmt, sie zu unterstützen). Diese sollten aus dem IANA WebSocket Extension Name Registry ausgewählt werden. Erweiterungen, die Parameter benötigen, trennen diese durch Semikolons.
Beispiele
WebSocket Eröffnungs-Handshake
Die untenstehende HTTP-Anfrage zeigt den Eröffnungs-Handshake, bei dem ein Client die Erweiterungen permessage-deflate
und client_max_window_bits
unterstützt.
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Die untenstehende Anfrage mit separaten Headern für jede Erweiterung ist gleichwertig:
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Extensions: client_max_window_bits
Die unten gezeigte Antwort könnte von einem Server gesendet werden, um anzuzeigen, dass er die permessage-deflate
Erweiterung unterstützen wird:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Extensions: permessage-deflate
Spezifikationen
Specification |
---|
The WebSocket Protocol # section-11.3.2 |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
Sec-WebSocket-Accept
Sec-WebSocket-Key
Sec-WebSocket-Version
Sec-WebSocket-Protocol
- Der WebSocket-Handshake und Subprotokolle in Writing WebSocket servers