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 Request-Header und Response-Header wird im WebSocket Eröffnungshandshake verwendet, um ein Subprotokoll für die Kommunikation zu verhandeln. Dies kann ein allgemein bekanntes Protokoll wie SOAP oder WAMP sein, oder ein benutzerdefiniertes Protokoll, das vom Client und Server verstanden wird.

In einem Request gibt der Header eines oder mehrere WebSocket-Subprotokolle an, die die Webanwendung gerne verwenden möchte, in der Reihenfolge der Präferenz. Diese können als Protokollwerte in mehreren Headern hinzugefügt werden oder als durch Kommas getrennte Werte in einem einzigen Header.

In einer Response gibt er das vom Server ausgewählte Subprotokoll an. Dies muss das erste Subprotokoll sein, das der Server aus der im Request-Header bereitgestellten Liste unterstützt.

Der Request-Header wird automatisch vom Browser hinzugefügt und mit den vom Anwendungsprotokoll angegebenen Werten im protocols Argument für WebSocket() gefüllt. Das vom Server ausgewählte Subprotokoll wird der Webanwendung in WebSocket.protocol zur Verfügung gestellt.

Header-Typ Request-Header, Response-Header
Verbotener Request-Header Ja (Sec- Präfix)

Syntax

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

Direktiven

<sub-protocols>

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

Als Response-Header ist dies ein einzelnes Subprotokoll, das vom Server ausgewählt wurde.

Beispiele

WebSocket-Eröffnungshandshake

Das Subprotokoll wird im ursprünglichen WebSocket-Handshake-Request angegeben. Der untenstehende Request 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 auf diese Weise 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 dies als soap dargestellt:

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