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

这篇具有很好参考价值的文章主要介绍了解决 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

注意:这里直接使用域名是在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、https://www.jianshu.com/p/581d4b777615
2、https://blog.csdn.net/qq_35808136/article/details/89677749文章来源地址https://www.toymoban.com/news/detail-408698.html

到了这里,关于解决 This request has been blocked; this endpoint must be available over WSS.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 调用错:getWriter() has already been called for this response

    这个错误通常表明您尝试从 Spring MVC 返回一个已使用的 HttpServletResponse 对象。 原因:这可能是由于直接调用 HttpServletResponse 的 getWriter() 或 getOutputStream() 方法,或者由于在控制器方法中抛出异常而自动调用 HttpServletResponse 的 write() 方法。 修改建议:您可以确保在控制器方法中

    2024年01月16日
    浏览(25)
  • Git报错fatal: this operation must be run in a work tree

    学习git在初始化仓库后查看git状态是报错fatal: this operation must be run in a work tree: 提示:这里描述项目中: 使用git init --bare 进行建立裸仓库之后,在使用git 其它的命令都会出现fatal:This operation must be run in a work tree 问题,处理方法: 解决方法:在该仓库目录下,新建文件夹,

    2024年02月11日
    浏览(49)
  • java.lang.IllegalStateException: Illegal access: this web application instance has been stopped

    java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already.  Could not load [org.apache.logging.log4j.core.impl.Log4jLogEvent$Builder]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. 部署web项目出现在这个问题,其

    2024年02月16日
    浏览(27)
  • [ This request has no response data available问题 ]

    目录 前言: 提示背景: 问题导致情况: 跨域设置: Canceled    摸鱼来了  接口响应200 response返回提示:This request has no response data available 1: 确定是否是跨域引起, 一般情如果有跨域会报跨域错误。报无响应的比较少。 2: 浏览器端的代码问题了,然后发现问题请求的代码执行后,紧

    2024年02月15日
    浏览(48)
  • 关于wb.write(response.getOutputStream()); 报错getOutputStream() has already been called for this respons

    如果你在使用 response.getOutputStream() 方法时出现 getOutputStream() has already been called for this response 错误,通常是由于多次尝试获取输出流所导致的。 在一个 HTTP 响应中,只能获取一次输出流,否则就会抛出上述错误。这是因为获取输出流时实际上已经开始了 HTTP 响应的正文部分,

    2024年02月05日
    浏览(33)
  • ◎ 增量更新jar包,报错问题(It has been compressed and nested jar files must be stored without compression)

    报错信息 我们在增量更新jar时,有新增的依赖包。重新打包之后,报错: It has been compressed and nested jar files must be stored without compression.Please check the mechanism userd to create your executable jar file. 报错原因 这个报错的大致意思是:它已经被压缩,嵌套的jar文件必须在没有压缩的情况下

    2024年02月08日
    浏览(22)
  • Maven启动报错 - No goals have been specified for this build.You must specify a valid lifecycle phase

    在对Maven项目进行Build / 初始化时  可能会出现下图这种情况: ​ 原因: 缺少了一个指定的goal,需要在项目的pom.xml文件中添加一项goal数据。 解决办法: 在安装目录下找到lib/model-builder-3.6.0.jar选择使用压缩包打开 根据这个目录META-INF——maven——org.apache.maven——maven-model-

    2024年02月06日
    浏览(45)
  • axios/ajax 请求头部添加自定义字段报错(has been blocked by CORS policy: Request header field authorization is ...

    这个错误是由于浏览器的安全机制所引起的,即跨域资源共享(CORS)策略。当浏览器发现一个跨域请求时,会发送一个预检请求(Preflight Request)来确认服务器是否允许跨域请求。在预检请求中,浏览器会检查请求头中的字段是否被服务器允许。如果请求头中包含了服务器不

    2024年02月16日
    浏览(25)
  • 前端报错:has been blocked by CORS policy: Response to preflight request doesn‘t pass access control chec

    Access to XMLHttpRequest at \\\'https://zxxxx.com/\\\' from origin \\\'http://zxxxx.com\\\' has been blocked by CORS policy: Response to preflight request doesn\\\'t pass access control check: It does not have HTTP ok status. 如果后端已经设置了跨域,那就是预检跨域请求问题; 如果后端没有设置跨域信息,则是跨域

    2024年02月02日
    浏览(30)
  • has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the requested

     Access to XMLHttpRequest at \\\'http://xxx/user/getAll/1/1\\\' from origin \\\'http://127.0.0.1:8080\\\' has been blocked by CORS policy: No \\\'Access-Control-Allow-Origin\\\' header is present on the requested resource. 网上找到一个方法: 大概就是, chrome安全策略的原因,chrome 禁止跨域策略(CORS policy)   新建一个 禁止cors跨域相关的策

    2024年01月23日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包