美文网首页
http\https下websocket的ws\wss链接

http\https下websocket的ws\wss链接

作者: rick_zhu | 来源:发表于2021-02-25 19:17 被阅读0次

    websocket在http下使用的是new WebSocket('ws://xxx')方式连接,在域名改为https后,websocket出现错误。
    按照websocket连接标准来对应:

    http -> new WebSocket('ws://xxx')
    https -> new WebSocket('wss://xxx')
    

    也就是在https下应该使用wss协议做安全链接,且wss下不支持ip地址的写法,写成域名形式。
    实际上浏览器并没有严格的限制http下一定使用ws,而不能使用wss,经过测试http协议下同样可以使用wss协议链接。
    在https下能打开ws连接么? 答案是不能, 因为浏览器不允许
    1.Firefox环境下https不能使用ws连接
    2.chrome内核版本号低于50的浏览器是不允许https下使用ws链接
    3.Firefox环境下https下使用wss链接需要安装证书
    实际上主要是问题出在Firefox以及低版本的Chrome内核浏览器上,于是在http与https两种协议都支持的情况下可以做兼容处理,即在http协议下使用ws,在https协议下使用wss。
    最好下面这样使用可解决兼容问题。

    let url= location.protocol === 'https:' 
        ? 'wss://localhost:8888' 
        : 'ws://localhost:8889';
    new WebSocket(protocol);
    

    参考链接:https://blog.csdn.net/Garrettzxd/article/details/81674251

    相关文章

      网友评论

          本文标题:http\https下websocket的ws\wss链接

          本文链接:https://www.haomeiwen.com/subject/cymufltx.html