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 für Anfragen und Antworten wird im Eröffnungs-Handshake von WebSocket verwendet, um eine Protokollerweiterung auszuhandeln, die vom Client und Server genutzt wird.

In einer Anfrage gibt der Header eine oder mehrere vom Webanwendung gewünschte Erweiterungen in der Reihenfolge der Präferenz an. Diese können als mehrere Header hinzugefügt oder als kommagetrennte Werte in einem einzelnen Header angegeben werden.

In einer Antwort kann der Header nur einmal erscheinen. Er gibt die vom Server ausgewählte Erweiterung aus den Präferenzen des Clients an. Dieser Wert muss die erste Erweiterung sein, die der Server aus der im Anforderungsheader angegebenen Liste unterstützt.

Der Anforderungsheader wird automatisch vom Browser basierend auf seinen eigenen Fähigkeiten hinzugefügt und hängt nicht von den beim Erstellen des WebSocket an den Konstruktor übergebenen Parametern ab.

Header-Typ Anfrage-Header, Antwort-Header
Verbotener Header-Name Ja (Sec--Präfix)

Syntax

Anfrage

http
Sec-WebSocket-Extensions: <extensions>

Antwort

http
Sec-WebSocket-Extensions: <selected-extension>

Direktiven

<extensions>

Eine kommagetrennte Liste von Erweiterungen, die angefordert werden (oder deren Unterstützung der Server zustimmen soll). Diese sollten aus dem IANA WebSocket Extension Name Registry ausgewählt werden. Erweiterungen, die Parameter erfordern, trennen diese mit Semikolons.

Beispiele

WebSocket-Eröffnungs-Handshake

Die folgende HTTP-Anfrage zeigt den Eröffnungs-Handshake, bei dem ein Client die Erweiterungen permessage-deflate und client_max_window_bits unterstützt.

http
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 folgende Anfrage mit separaten Headern für jede Erweiterung ist gleichwertig:

http
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 folgende Antwort könnte von einem Server gesendet werden, um anzuzeigen, dass er die Erweiterung permessage-deflate unterstützt:

http
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