TL;DR:网站通过 HTTPS 提供服务,需要通过未加密的通道 (ws:// url) 访问 WebSockets 服务器。浏览器不喜欢这样。
加密 websocket 是可能的,但不方便 - 没有可以签署证书的可信机构,因此需要为每个客户端手动安装它。我想把它作为最后的手段。
该网站必须通过 HTTPS 提供服务,并且不能降级为 HTTP。
有没有其他方法可以绕过这个限制?我尝试了 Content-Security-Policy,但没有奏效。
TL;DR:网站通过 HTTPS 提供服务,需要通过未加密的通道 (ws:// url) 访问 WebSockets 服务器。浏览器不喜欢这样。
加密 websocket 是可能的,但不方便 - 没有可以签署证书的可信机构,因此需要为每个客户端手动安装它。我想把它作为最后的手段。
该网站必须通过 HTTPS 提供服务,并且不能降级为 HTTP。
有没有其他方法可以绕过这个限制?我尝试了 Content-Security-Policy,但没有奏效。
维克斯,
您所描述的场景是在限制打开非安全 Websocket 连接时被认为是安全问题的场景之一。
访问安全网站 (HTTPS) 的用户假定所有数据都是安全的。浏览器将不允许在此上下文中进行非安全通信(除非出现安全故障)。这应该包括资产请求和在安全上下文中调用的任何其他请求(预计“混合内容”消息将慢慢淡入历史,因为限制收紧)。
在某些浏览器上甚至更糟糕。例如,Safari 将拒绝打开与未签名服务器的安全 Websocket 连接,即使网页已加载临时批准证书。
有没有其他方法可以绕过这个限制?
很遗憾地报告您的问题的简短回答是“否”。