Sec-WebSocket-Protocol 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-Protocol Anforderungs- und Antwort-Header wird im WebSocket Eröffnungs-Handshake verwendet, um ein Sub-Protokoll zu verhandeln, das in der Kommunikation verwendet werden soll. Dies kann ein wohlbekanntes Protokoll wie SOAP oder WAMP sein oder ein benutzerdefiniertes Protokoll, das von Client und Server verstanden wird.

In einer Anfrage gibt der Header ein oder mehrere WebSocket-Sub-Protokolle an, die die Webanwendung in der Reihenfolge der Präferenz verwenden möchte. Diese können als Protokollwerte in mehreren Headern hinzugefügt oder als kommagetrennte Werte zu einem einzigen Header hinzugefügt werden.

In einer Antwort gibt er das vom Server ausgewählte Sub-Protokoll an. Dies muss das erste Sub-Protokoll sein, das der Server aus der in der Anforderung angegebenen Liste unterstützt.

Der Anforderungs-Header wird automatisch vom Browser hinzugefügt und ausgefüllt, indem Werte verwendet werden, die von der Anwendung im protocols-Argument an die WebSocket()-Funktion übergeben werden. Das vom Server gewählte Sub-Protokoll wird der Webanwendung in WebSocket.protocol zur Verfügung gestellt.

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

Syntax

Anforderung:

http
Sec-WebSocket-Protocol: <sub-protocols>

Antwort:

http
Sec-WebSocket-Protocol: <selected-sub-protocol>

Direktiven

<sub-protocols>

Eine kommagetrennte Liste von Sub-Protokollnamen in der Reihenfolge der Präferenz. Die Sub-Protokolle können aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden oder ein benutzerdefinierter Name sein, der gemeinsam vom Client und dem Server verstanden wird.

Beispiele

WebSocket-Eröffnungs-Handshake

Das Sub-Protokoll wird in der ursprünglichen WebSocket-Handshake-Anforderung angegeben. Die untenstehende Anforderung zeigt, dass der Client soap bevorzugt, aber auch wamp 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-Protocol: soap, wamp

Die Protokolle wie folgt anzugeben, hat den gleichen Effekt:

http
Sec-WebSocket-Protocol: soap
Sec-WebSocket-Protocol: wamp

Die Antwort des Servers wird den Sec-WebSocket-Protocol-Header enthalten, der das erste Sub-Protokoll auswählt, das er von den Präferenzen des Clients unterstützt. Unten wird dies als soap gezeigt:

http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: soap

Spezifikationen

Specification
The WebSocket Protocol
# section-11.3.4

Browser-Kompatibilität

Siehe auch