Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

En-tête Sec-WebSocket-Protocol

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

L'en-tête de requête et de réponse HTTP Sec-WebSocket-Protocol est utilisé dans le WebSocket ouverture de la poignée de main pour négocier un sous-protocole à utiliser dans la communication. Il peut s'agir d'un protocole bien compris, tel que SOAP ou WAMP, ou d'un protocole personnalisé compris par le client et le serveur.

Dans une requête, l'en-tête définit un ou plusieurs sous-protocoles WebSocket que l'application Web souhaite utiliser, par ordre de préférence. Ils peuvent être ajoutés en tant que valeurs de protocole dans plusieurs en-têtes, ou en tant que valeurs séparées par des virgules ajoutées à un seul en-tête.

Dans une réponse, il définit le sous-protocole sélectionné par le serveur. Il doit s'agir du premier sous-protocole que le serveur prend en charge dans la liste fournie dans l'en-tête de la requête.

L'en-tête de requête est automatiquement ajouté et rempli par le navigateur en utilisant les valeurs définies par l'application dans l'argument protocols de WebSocket(). Le sous-protocole sélectionné par le serveur est mis à la disposition de l'application Web dans WebSocket.protocol.

Type d'en-tête En-tête de requête, En-tête de réponse
En-tête de requête interdit Oui (préfixe Sec-)

Syntaxe

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

Directives

<sub-protocols>

Une liste de noms de sous-protocoles séparés par des virgules, dans l'ordre de préférence. Les sous-protocoles peuvent être sélectionnés à partir du Registre des noms de sous-protocoles WebSocket de l'IANA (angl.), ou peuvent être un nom personnalisé compris conjointement par le client et le serveur.

En tant qu'en-tête de réponse, il s'agit d'un seul sous-protocole que le serveur a sélectionné.

Exemples

Poignée de main d'ouverture du WebSocket

Le sous-protocole est défini dans la requête de poignée de main WebSocket originale. La requête ci-dessous montre que le client préfère soap, mais prend également en charge wamp.

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

La spécification des protocoles de cette manière a le même effet :

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

La réponse du serveur inclut l'en-tête Sec-WebSocket-Protocol, sélectionnant le premier sous-protocole qu'il prend en charge parmi les préférences du client. Ci-dessous, il est indiqué comme soap :

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

Spécifications

Spécification
The WebSocket Protocol
# section-11.3.4

Compatibilité des navigateurs

Voir aussi