我一直在尝试设置一个服务器,用户可以在其中使用 websockets 发送登录信息,但我不想使用 ws 来执行此操作。我希望能够在没有 https 的情况下打开 wss。可悲的是,没有任何选择可以做到这一点。所以问题是如何在不使用 https 协议(protocol)的情况下在客户端执行此操作。
最佳答案
是的,这是可能的。为此,请将您的 websocket URL 直接传递给 socket.io 客户端,如下所示:
var socket = io('wss://example.com/');
请注意,反过来是不可能的:虽然没有什么可以阻止 HTTP 页面创建 WSS 连接,但当今大多数浏览器会阻止来自 HTTPS 页面的任何 WS 连接以加强安全性。
我还要提醒的是,通过 WSS 打开的 websocket 仍然不比它源自的页面更安全。如果您使用 WSS 是为了它的安全优势,请注意,如果攻击者在加载页面时覆盖您的页面(HTTPS 会阻止),那么所有安全性都可能化为乌有。
关于javascript - 是否可以强制 socket.io 使用 wss 而不是 ws,而不必更改为 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41426495/