• 解决 This request has been blocked; this endpoint must be available over WSS.


    1、问题

    使用WebSocket在本地是没有问题的,能够和前端进行正常交互,但是将项目部署到服务器上,发现和前端建立不了WebSocket的连接,打开浏览器控制台报错:This request has been blocked; this endpoint must be available over WSS.

    2、理解

    1、首先我们要明白 wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。

    2、利用nginx代理wss【通讯原理及流程】

    (1)、客户端发起wss连接连到nginx

    (2)、nginx将wss协议的数据转换成ws协议数据并转发到Workerman的websocket协议端口

    (3)、Workerman收到数据后做业务逻辑处理

    (4)、Workerman给客户端发送消息时,则是相反的过程,数据经过nginx/转换成wss协议然后发给客户端

    3、关于 ws 和 wss

    WebSocket可以使用 ws 或 wss 来作为统一资源标志符,类似于 HTTP 或 HTTPS。其中 ,wss 表示在 TLS 之上的 WebSocket,相当于 HTTPS。默认情况下,WebSocket的 ws 协议基于Http的 80 端口;当运行在TLS之上时,wss 协议默认是基于Http的 443 端口。说白了,wss 就是 ws 基于 SSL 的安全传输,与 HTTPS 一样样的道理。所以,如果你的网站是 HTTPS 协议的,那你就不能使用 ws:// 了,浏览器会 block 掉连接,和 HTTPS 下不允许 HTTP 请求一样。

    4、解决

    前提,服务器已经配置好了Nginx。如果没有配置的可以去网上搜索,很多资料的。如果找不到资料的小伙伴可以看文章的最后,我会把我的nginx配置贴出来。

    在前端将:ws:// 修改为:wss://即可,同时,后面不要跟IP地址加端口,要使用网站的域名,例如:

    本地websocket链接:ws://192.168.0.46:8781/tf/webSocket/huozhu20220819
    > 
    那么更新到哦服务器的时候,链接应该修改为:wss://网站域名/tf/webSocket/huozhu20220819
    
    • 1
    • 2
    • 3

    注意:这里直接使用域名是在Nginx做了代理,可以根据url自动匹配到对应的IP地址+端口

    5、Nginx配置

    server
    {
        listen 80;
        listen 443 ssl;
        server_name 域名;
     
        ssl on;
        ssl_certificate 证书.crt;
        ssl_certificate_key 证书.key;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;
        
        location /wss/  {   
         proxy_pass http://127.0.0.1:82/;        #通过配置端口指向部署websocker的项目
         proxy_http_version 1.1;    
         proxy_set_header Upgrade $http_upgrade;    
         proxy_set_header Connection "Upgrade";    
         proxy_set_header X-real-ip $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
         }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    感谢:
    1、https://www.jianshu.com/p/581d4b777615
    2、https://blog.csdn.net/qq_35808136/article/details/89677749

  • 相关阅读:
    计算机毕业设计java+ssm的高校科研仪器共享平台-计算机毕业设计
    【WSL2】CENTOS7 安装与配置
    vue常用指令
    【???】???
    强制用户使用定向推送功能是什么意思?整改措施请收好
    02 【基础篇-vim编辑器 网络配置 远程登录】
    svelte初探-中
    linux系统启动流程
    【carsim+simulink 联合仿真——车辆轨迹MPC跟踪】
    常用的Java集合框架你知道多少?
  • 原文地址:https://blog.csdn.net/weixin_47316183/article/details/126450623