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

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 HTTP Sec-WebSocket-Key est utilisé dans le WebSocket ouverture de la poignée de main pour permettre à un client (agent utilisateur) de confirmer qu'il « veut vraiment » demander qu'un client HTTP soit mis à niveau pour devenir un WebSocket.

La valeur de la clé est calculée à l'aide d'un algorithme défini dans la spécification WebSocket, donc cela ne fournit pas de sécurité. Elle aide plutôt à empêcher les clients non WebSocket de demander par inadvertance, ou par mauvaise utilisation, une connexion WebSocket.

Cet en-tête est automatiquement ajouté par les agents utilisateurs lorsqu'un script ouvre un WebSocket ; il ne peut pas être ajouté en utilisant les méthodes fetch() ou XMLHttpRequest.setRequestHeader().

L'en-tête de réponse Sec-WebSocket-Accept du serveur doit inclure une valeur calculée à partir de la valeur de clé définie. L'agent utilisateur peut alors valider cela avant de confirmer la connexion.

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

Syntaxe

http
Sec-WebSocket-Key: <key>

Directives

<key>

La clé pour cette requête de mise à niveau. Il s'agit d'un nombre unique de 16 octets sélectionné au hasard, encodé en base64 et encodé de manière isomorphe. L'agent utilisateur l'ajoute lors de l'initialisation de la connexion WebSocket.

Exemples

Poignée de main d'ouverture du WebSocket

Le client initie une poignée de main WebSocket avec une requête comme suit. Notez que cela commence comme une requête HTTP GET (HTTP/1.1 ou ultérieure), en plus de Sec-WebSocket-Key, la requête inclut l'en-tête Upgrade, indiquant l'intention de passer de HTTP à une connexion WebSocket.

http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

La réponse du serveur doit inclure l'en-tête Sec-WebSocket-Accept avec une valeur calculée à partir de l'en-tête Sec-WebSocket-Key de la requête, et confirme l'intention de passer la connexion à une connexion WebSocket :

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

Spécifications

Spécification
The WebSocket Protocol
# section-11.3.1

Compatibilité des navigateurs

Voir aussi