Springboot 2.5.X框架解决跨域遇到的坑

本文介绍了从SpringBoot 2.1.8升级到2.5.6后遇到的跨域问题及解决方法。通过对比不同版本间的配置差异,提供了一种适用于2.5.6版本的跨域配置方案。

今天为了增加es支持,用了许久的springboot 2.1.8被我放弃,升级到了2.5.6版本,但随之而来还有跨域的坑。

简单来说说跨域:

1、什么叫跨域?

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同,这就是跨域。

2、为什么会产生跨域?

出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。

跨域是我们前后端分离开发中经常会遇到的一个问题。了解什么叫跨域,为什么会产生跨域后,我们来看看如何解决跨域问题。

先来说说2.1.8版本解决跨域的方法。直接贴代码了,配置类+跨域Bean

@Configuration
public class GlobalCorsConfig {    @Bean
    public CorsFilter corsFilter() {
        //1. 添加 CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些原始域
        config.addAllowedOrigin("*");
        //是否发送 Cookie
        config.setAllowCredentials(true);
        //放行哪些请求方式
        config.addAllowedMethod("*");
        //放行哪些原始请求头部信息
        config.addAllowedHeader("*");

        //暴露哪些头部信息
        //config.addExposedHeader("*");
        //2. 添加映射路径
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**",config);
        //3. 返回新的CorsFilter
        return new CorsFilter(corsConfigurationSource);
    }
}

但是当你升级到了2.5.6之后的版本就会遇到新的跨域,这个雷已经不能解决问题了

所以赶紧去官方文档查看一下,找到了解决方案,在启动类下增加如下Bean,代码块如下

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowCredentials(true).allowedOriginPatterns("*");
            }
        };
    }

好了问题解决了,如果对你解决问题有帮助,请动动你的小手,点个赞。

更多编程内容,请扫码关注《coder练习生》,如果觉得有用,也可赠送作者一杯咖啡

 

在提供服务给另外一个系统使用时,如果不提供支持,另外的那个系统在访问本系统提供的服务时会收到Access-Control-Allow-Origin类型的错误,并且访问失败。 添加访问支持有两种简单的方式:一种是在所有头接口返回的response头中添加response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1/*");另外一种就是在本系统的web.xml中添加CORS支持。 CORS支持需要用到两个jar文件,分别是cors-filter-1.7.jar和java-property-utils-1.9.1.jar。 把他们放到工程的lib中,然后在web.xml中添加: < filter > < filter-name > CORS </ filter-name > < filter-class > com.thetransactioncompany.cors.CORSFilter </ filter-class > < init-param > < param-name > cors.allowOrigin </ param-name > < param-value > * </ param-value > </ init-param > < init-param > < param-name > cors.supportedMethods </ param-name > < param-value > GET, POST, HEAD, PUT, DELETE </ param-value > </ init-param > < init-param > < param-name > cors.supportedHeaders </ param-name > < param-value > Accept, Origin, X-Requested-With, Content-Type, Last-Modified </ param-value > </ init-param > < init-param > < param-name > cors.exposedHeaders </ param-name > < param-value > Set-Cookie </ param-value > </ init-param > < init-param > < param-name > cors.supportsCredentials </ param-name > < param-value > true </ param-value > </ init-param > </ filter > < filter-mapping > < filter-name > CORS </ filter-name > < url-pattern > /* </ url-pattern > </ filter-mapping >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值