web-dev-qa-db-fra.com

html5 Websocket avec SSL

Est-il possible d'avoir des WebSockets avec https? Lors du passage à https, WebSocket renvoie une erreur de sécurité et fonctionne parfaitement avec les protocoles http habituels.

socket = new WebSocket("ws://my_www:1235"); 

Je vous remercie

105
Eric

La connexion WebSocket commence sa vie avec une liaison HTTP ou HTTPS. Lorsque vous accédez à la page via HTTP, vous pouvez utiliser WS ou WSS (WebSocket secure: WS sur TLS). Toutefois, lorsque votre page est chargée via HTTPS, vous ne pouvez utiliser que WSS - les navigateurs ne permettent pas de "rétrograder" la sécurité.

158
Peter Moskovits

Vous ne pouvez pas utiliser WebSockets sur HTTPS, mais vous pouvez utiliser WebSockets sur TLS (HTTPS est HTTP sur TLS). Utilisez simplement "wss: //" dans l'URI.

Je pense que la version récente de Firefox ne vous permettra pas d'utiliser des WebSockets non-TLS à partir d'une page HTTPS, mais l'inverse ne devrait pas poser de problème.

28
kanaka

1 mise en garde supplémentaire (outre la réponse de kanaka/peter): si vous utilisez WSS et que le certificat de serveur n’est pas acceptable pour le navigateur, vous risquez de ne pas obtenir tout dialogue rendu par le navigateur (comme cela se produit pour le Web pages). Cela est dû au fait que WebSockets est traité comme une "sous-ressource" et que les dialogues acceptation du certificat/exception de sécurité/quels que soient les dialogues qui ne sont pas restitués pour les sous-ressources.

21
oberstet