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
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.
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 :
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/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
- L'en-tête
Sec-WebSocket-Accept - L'en-tête
Sec-WebSocket-Key - L'en-tête
Sec-WebSocket-Version - L'en-tête
Sec-WebSocket-Protocol - La poignée de main du WebSocket et les sous-protocoles dans Écrire des serveurs WebSocket