TL; DR:网站通过HTTPS提供,需要通过未加密的频道(ws:// url)访问WebSockets服务器。浏览器不喜欢这个。
加密websocket是可能的,但不方便 - 没有可信任的权限可以签署证书,因此需要为每个客户端手动安装它。我想把它作为最后的手段。
网站必须通过HTTPS提供,不能降级为HTTP。
还有其他方法可以绕过这个限制吗?我尝试了Content-Security-Policy,但它没有用。
答案 0 :(得分:3)
Vix指数,
您正在描述的方案是在打开非安全Websocket连接的限制到位时被视为安全问题的方案之一。
访问安全网站(HTTPS)的用户假定所有数据都是安全的。浏览器不允许在此上下文中进行非安全通信(除非它有安全性错误)。这应该包括资产请求和在安全上下文中调用的任何其他请求(期望"混合内容"消息慢慢淡入历史,因为限制收紧)。
在某些浏览器上甚至更糟。例如,即使网页已加载临时批准证书,Safari也将拒绝打开与未签名服务器的安全Websocket连接。
有没有其他方法可以绕过这个限制?
我很抱歉地报告您的问题的简短回答是"否"。