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 zu verwendendes Subprotokoll in der Kommunikation auszuhandeln. Dies kann ein gut verstandenes Protokoll wie SOAP oder WAMP sein, oder ein benutzerdefiniertes Protokoll, das vom Client und Server verstanden wird.

In einer Anfrage gibt der Header ein oder mehrere WebSocket-Subprotokolle 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 durch Kommas getrennte Werte einem einzelnen Header hinzugefügt werden.

In einer Antwort gibt er das vom Server gewählte Subprotokoll an. Dies muss das erste Subprotokoll sein, das der Server aus der in der Anforderungsheader bereitgestellten Liste unterstützt.

Der Anforderungs-Header wird automatisch vom Browser hinzugefügt und ausgefüllt, wobei die von der Anwendung im protocols-Argument an WebSocket() angegebenen Werte verwendet werden. Das vom Server ausgewählte Subprotokoll steht der Webanwendung in WebSocket.protocol zur Verfügung.

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

Syntax

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

Direktiven

<sub-protocols>

Eine durch Kommas getrennte Liste von Subprotokoll-Namen in der Reihenfolge der Präferenz. Die Subprotokolle können aus dem IANA-WebSocket-Subprotokollnamen-Register ausgewählt werden oder ein benutzerdefinierter Name sein, der vom Client und Server gemeinsam verstanden wird.

Als Antwort-Header ist dies ein einzelnes Subprotokoll, das der Server ausgewählt hat.

Beispiele

WebSocket-Eröffnungs-Handshake

Das Subprotokoll wird in der ursprünglichen WebSocket-Handshake-Anfrage angegeben. Die untenstehende Anfrage 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 so anzugeben hat denselben Effekt:

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

Die Antwort des Servers wird den Sec-WebSocket-Protocol-Header enthalten, der das erste Subprotokoll auswählt, das er aus den Präferenzen des Clients unterstützt. Unten wird das 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