代码之家  ›  专栏  ›  技术社区  ›  mahe

ws和wss之间的区别?

  •  69
  • mahe  · 技术社区  · 8 年前

    wss是通过普通HTTP进行升级还是仅通过HTTPS工作?

    webSocket = new WebSocket("ws://localhost:port/Esv/ocp");
    

    工作正常,当我将ws更改为wss时

    webSocket = new WebSocket("wss://localhost:port/Esv/ocp");
    

    它显示了此错误:

    建立连接时出错:net::ERR\u SSL\u PROTOCOL\u Error

    1 回复  |  直到 8 年前
        1
  •  103
  •   Community Mohan Dere    4 年前

    短版本

    到SSL或不到SSL

    你可能有一个 SSL certificate issue . 连接点规则可以是 summarized as

    • wss 连接打开 https only
    • ws 连接打开 http

    反之亦然:

    • https 接受 wss only
    • http 接受 ws only

    错误

    以下情况会导致错误(在Firefox下进行的测试):

    • 如果要连接 wss 连接到 http 端点。在我的测试中,我有一个

      InvalidStateError:试图使用不可用或不再可用的对象

    • 如果要连接 ws 连接到 https 端点,您将出现错误

      安全错误:操作不安全。

    正式答案

    websocket的圣经是 RFC 6455 . 在节中 4.1.5 :

    /安全/ 如果为true,则客户端必须在打开连接后和发送握手数据之前通过连接执行TLS握手[RFC2818]。如果失败(例如,无法验证服务器的证书),则客户端必须 WebSocket连接失败

    这个 保护 保护

    如果方案组件不敏感地匹配“wss”大小写,则URI称为“安全”(据说“设置了安全标志”)。


    如果你想使用 wss :

    • 您必须激活SSL
    • 必须保护端点( https://...

    如果你想使用 ws :

    • 确保端点未启用SSL( http://...