我一直在尝试设置一个服务器,用户可以使用websockets发送登录,但我不想使用ws这样做。我希望能够在没有https的情况下打开wss。可悲的是,没有任何选择可以做到这一点。所以问题是如何在不使用https协议的情况下在客户端执行此操作。
答案 0 :(得分:4)
是的,这是可能的。为此,请将您的websocket URL直接传递给socket.io客户端,如下所示:
var socket = io('wss://example.com/');
请注意,反向是不可能的:虽然没有什么可以防止HTTP页面创建WSS连接,但是今天大多数浏览器都会阻止来自HTTPS页面的任何WS连接以强制实施更高的安全性。
我还要提醒一下,通过WSS打开的websocket仍然比它源自的页面更安全。如果您正在使用WSS的安全性,请注意,如果攻击者在加载页面时覆盖了您的页面(HTTPS会阻止),那么所有安全性都可能是徒劳的。
答案 1 :(得分:1)
来自Websocket protocol specification:
wss
URI标识WebSocket服务器和资源名称,以及 表示通过该连接保护通过该连接的流量 TLS (包括TLS的标准优势,例如数据机密性 和完整性,以及端点身份验证)。
强调我的
现在您可以理解您的请求的荒谬性: wss https 。
当然术语是错误的( https 是与 wss 不同的协议),但是行的底部是两者都只是它们各自的TCP普通协议的版本(< em> http 和 ws )超过TLS。
所以答案是不。
事实上,安全是一件复杂的事情 非常有经验的程序员不会发明或探索新的方法,并且根据您提出的问题,您似乎并不是这方面的专家。
所以做最好的做法最好的做法是说,他们说使用&#34; https &#34;使用&#34; https &#34;。
建议认真开始学习安全(或雇用承包商),除非您拥有抽象代数博士学位和多年开发加密方案的经验,否则创建新的方法来执行安全认证是不可能的。