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

http
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.

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, bbf-usp-protocol

Die folgende Anforderung 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; 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
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