带有SSL的html5 Websocket

Eri*_*ric 108 ssl html5 websocket

是否可以使用https的WebSockets?切换到https时,我的WebSocket会返回一个安全错误,并且可以与常规http完美配合...

socket = new WebSocket("ws://my_www:1235"); 
Run Code Online (Sandbox Code Playgroud)

谢谢

Pet*_*its 160

WebSocket连接通过HTTP或HTTPS握手开始.通过HTTP访问页面时,您可以使用WS或WSS(WebSocket安全:WS over TLS).但是,当您的页面通过HTTPS加载时,您只能使用WSS - 浏览器不允许"降级"安全性.


kan*_*aka 28

您不能通过HTTPS使用WebSockets,但可以通过TLS使用WebSockets(HTTPS是基于TLS的HTTP).只需在URI中使用"wss://"即可.

我相信最近版本的Firefox不允许你从HTTPS页面使用非TLS WebSockets,但反过来不应该是一个问题.

  • 谢谢.顺便说一句,我刚刚通过Proxying(使用apache)解决了从`wss://`到`ws://`的请求.所以,我使用`wss:// ws.domain.com`和apache在其上应用代理并重定向WS服务器运行的请求.例如:`ws://10.12.23.45:5641/server.php`.我知道这是一个非常糟糕的解决方案 - 尽管如此,它对我有用.如果您指导我完成apache配置,我将非常感谢您的帮助.例如:在哪里放置`.cert`等谢谢! (4认同)

obe*_*tet 21

另外一个警告(除了kanaka/peter的回答):如果您使用WSS,并且浏览器不接受服务器证书,您可能无法获得任何浏览器呈现的对话框(就像网页一样).这是因为WebSockets被视为所谓的"子资源",并且证书接受/安全异常/不为子资源呈现任何对话框.

  • 本机源于浏览器(而不是页面)的对话框.就像"这个证书无效,你想继续?" (2认同)