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-Extensions

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-Extensions est utilisé dans la WebSocket ouverture de la poignée de main pour négocier une extension de protocole utilisée par le client et le serveur.

Dans une requête, l'en-tête définit une ou plusieurs extensions que l'application web souhaite utiliser, par ordre de préférence. Celles-ci peuvent être ajoutées dans plusieurs en-têtes, ou sous forme de valeurs séparées par des virgules ajoutées à un seul en-tête. Chaque extension peut également avoir un ou plusieurs paramètres — ce sont des valeurs séparées par des points-virgules listées après l'extension.

Dans une réponse, l'en-tête ne peut apparaître qu'une seule fois, où il définit l'extension sélectionnée par le serveur parmi les préférences du client. Cette valeur doit être la première extension 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é par le navigateur en fonction de ses propres capacités, et ne dépend pas des paramètres passés au constructeur lors de la création du WebSocket.

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-Extensions: <extensions>

Directives

<extensions>

Une liste d'extensions séparées par des virgules à demander (ou que le serveur accepte de prendre en charge). Celles-ci sont couramment sélectionnées à partir du Registre des noms d'extension WebSocket de l'IANA (angl.) (des extensions personnalisées peuvent également être utilisées). Les extensions qui prennent des paramètres les délimitent par des points-virgules.

Exemples

Poignée de main d'ouverture du WebSocket

La requête HTTP ci-dessous montre la poignée de main d'ouverture où un client prend en charge l'extension permessage-deflate (avec le paramètre client_max_window_bits), et l'extension bbf-usp-protocol.

http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, bbf-usp-protocol

La requête ci-dessous avec des en-têtes séparés pour chaque extension est équivalente :

http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Extensions: bbf-usp-protocol

La réponse ci-dessous peut être envoyée par un serveur pour indiquer qu'il prend en charge l'extension permessage-deflate :

http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Extensions: permessage-deflate

Spécifications

Spécification
The WebSocket Protocol
# section-11.3.2

Compatibilité des navigateurs

Voir aussi