Sec-WebSocket-Protocol

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 Antwortheader wird im WebSocket Eröffnungs-Handshake verwendet, um ein Subprotokoll für die Kommunikation auszuhandeln. Dies kann ein bekanntes 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 verwenden möchte, in der Reihenfolge der Priorität. Diese können als Protokollwerte in mehreren Headern hinzugefügt werden oder als kommagetrennte Werte, die zu einem einzelnen Header hinzugefügt werden.

In einer Antwort gibt es das vom Server ausgewählte Subprotokoll an. Dies muss das erste Subprotokoll sein, das der Server aus der im Anforderungsheader angegebenen Liste unterstützt.

Der Anforderungsheader wird automatisch vom Browser hinzugefügt und mit Werten ausgefüllt, die von der Anwendung im protocols-Argument der WebSocket()-Methode angegeben werden. Das vom Server ausgewählte Subprotokoll ist der Webanwendung in WebSocket.protocol verfügbar.

Header-Typ Anforderungsheader, Antwortheader
Verbotener Anforderungsheader 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 Subprotokollnamen in der Reihenfolge der Präferenz. Die Subprotokolle können aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden oder es kann sich um einen benutzerdefinierten Namen handeln, der vom Client und Server gemeinsam verstanden wird.

Beispiele

WebSocket-Eröffnungshandshake

Das Subprotokoll wird in der ursprünglichen WebSocket-Handshake-Anforderung spezifiziert. 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 auf diese Weise anzugeben, hat die gleiche Wirkung:

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

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

BCD tables only load in the browser

Siehe auch