解决springboot2.5.6版本 websocket跨域的问题

本文介绍了在升级SpringBoot至2.5.6版本后,WebSocket连接遇到的跨域问题及解决方法。作者尝试了网上常见的重写addCorsMappings和设置CorsFilter的方案,但并未解决问题。通过源码调试发现,WebSocket实际使用的配置不在这些地方,而是在SockJsServiceRegistration中。最终,通过将SockJs的allowedOrigins改为setAllowedOriginPatterns成功解决了跨域问题。此外,作者提醒在使用SpringCloud Gateway时,不应配置额外的跨域过滤器,否则会导致错误。
摘要由CSDN通过智能技术生成

1.springboot升级版本以后websocket连接出现以下错误:

java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider using “allowedOriginPatterns” instead.

2.参考网上的博客,都是让我重写addCorsMappings方法,或者重新设置CoresFilter

网上的方法1:

> @Configuration public class WebMvcConfig implements WebMvcConfigurer {
   
>     /**
>      * 开启跨域
>      */
>     @Override
>     public void addCorsMappings(CorsRegistry registry) {
   
>         // 设置允许跨域的路由
>         registry.addMapping("/**")
>                 // 设置允许跨域请求的域名
>                 .allowedOriginPatterns("*")
>                 // 是否允许证书(cookies)
>                 .allowCredentials(true)
>                 // 设置允许的方法
>                 .allowedMethods("*")
>                 // 跨域允许时间
>                 .maxAge(3600);
>     } }

网上的方法2:

>  @Bean
>     public CorsFilter 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值