Sec-WebSocket-Extensions header
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-Extensions Anforderungs- und Antwortheader wird im WebSocket Eröffnungs-Handshake verwendet, um eine Protokollerweiterung auszuhandeln, die vom Client und Server genutzt wird.
In einer Anforderung gibt der Header eine oder mehrere Erweiterungen an, die die Webanwendung in absteigender Präferenz nutzen möchte. Diese können in mehreren Headern hinzugefügt werden oder als kommagetrennte Werte einem einzigen Header hinzugefügt werden. Jede Erweiterung kann auch einen oder mehrere Parameter haben — diese sind mit Semikolons getrennte Werte, die nach der Erweiterung aufgelistet werden.
In einer Antwort kann der Header nur einmal erscheinen, wobei er die vom Server aus den Vorlieben des Clients ausgewählte Erweiterung angibt. Dieser Wert muss die erste Erweiterung sein, die der Server aus der im Anforderungsheader bereitgestellten Liste unterstützt.
Der Anforderungsheader wird automatisch vom Browser basierend auf seinen eigenen Fähigkeiten hinzugefügt und hängt nicht von den Parametern ab, die dem Konstruktor übergeben werden, wenn der WebSocket
erstellt wird.
Header-Typ | Anforderungs-, Antwortheader |
---|---|
Verbotener Anforderungsheader | Ja (Sec- Präfix) |
Syntax
Sec-WebSocket-Extensions: <extensions>
Direktiven
<extensions>
-
Eine kommagetrennte Liste von Erweiterungen, die angefordert werden sollen (oder denen der Server zustimmen soll, diese zu unterstützen). Diese werden häufig aus dem IANA WebSocket Extension Name Registry ausgewählt (benutzerdefinierte Erweiterungen können ebenfalls verwendet werden). Erweiterungen, die Parameter verwenden, trennen diese mit Semikolons.
Beispiele
WebSocket Eröffnungs-Handshake
Die nachstehende HTTP-Anforderung zeigt den Eröffnungs-Handshake, bei dem ein Client die permessage-deflate
-Erweiterung (mit client_max_window_bits
-Parameter) und die bbf-usp-protocol
-Erweiterung 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, bbf-usp-protocol
Die folgende Anforderung 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; client_max_window_bits
Sec-WebSocket-Extensions: bbf-usp-protocol
Die nachstehende 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
Siehe auch
Sec-WebSocket-Accept
Sec-WebSocket-Key
Sec-WebSocket-Version
Sec-WebSocket-Protocol
- Der WebSocket Handshake und Subprotokolle in Writing WebSocket servers