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 Request-Header und Response-Header wird im WebSocket-Eröffnungshandshake verwendet, um eine Protokollerweiterung auszuhandeln, die vom Client und Server benutzt wird.
In einem Request gibt der Header eine oder mehrere Erweiterungen an, die die Webanwendung nutzen möchte, in der Reihenfolge der Präferenz. Diese können als mehrere Header hinzugefügt werden oder als kommagetrennte Werte zu einem einzelnen Header hinzugefügt werden. Jede Erweiterung kann auch ein oder mehrere Parameter haben — diese sind semikolongetrennte Werte, die nach der Erweiterung aufgeführt werden.
In einer Response kann der Header nur einmal erscheinen, wobei er die vom Server aus den Präferenzen des Clients ausgewählte Erweiterung angibt. Dieser Wert muss die erste Erweiterung sein, die der Server aus der im Request-Header bereitgestellten Liste unterstützt.
Der Request-Header wird vom Browser automatisch basierend auf seinen eigenen Fähigkeiten hinzugefügt und hängt nicht von Parametern ab, die an den Konstruktor übergeben werden, wenn der WebSocket
erstellt wird.
Header-Typ | Request-Header, Response-Header |
---|---|
Verbotener Request-Header | 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, sie zu unterstützen). Diese werden häufig aus dem IANA WebSocket-Erweiterungsnamen-Register ausgewählt (benutzerdefinierte Erweiterungen können ebenfalls verwendet werden). Erweiterungen, die Parameter haben, trennen diese mit Semikolons.
Beispiele
WebSocket-Eröffnungshandshake
Der folgende HTTP-Request zeigt das Eröffnungshandshake, 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
Der folgende Request mit separaten Headers 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 folgende Response 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
- Das WebSocket-Handschlag und Subprotokolle in Writing WebSocket servers