springboot跨域处理

springboot处理跨域问题,用过3个处理方式,下面分别介绍下

1.@CrossOrigin

  可以在方法上加@CrossOrigin注解,实现跨域处理,该注解适用于部分方法需要跨域请求的模式,可以通过指定origins参数,配置允许访问的相关路径信息

  该注解的默认配置为:

 

"Access-Control-Allow-Origin" : "*"
"Access-Control-Allow-Methods" : "GET,POST,PUT,OPTIONS"
"Access-Control-Allow-Credentials" : "true"

2.跨域的全局处理

springboot2.* 版本, 实现WebMvcConfigurer 里的addCorsMappings 方法

springboot1.* 版本,实现WebMvcConfigurerAdapter  里的addCorsMappings方法

@Configuration
public class corsConfig implements WebMvcConfigurer {
   

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 允许跨域请求路径
        registry.addMapping("/**")
                // 允许跨域请求域名
                .allowedOrigins("*")
                // 允许的方法
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                // 时间
                .maxAge(3600)
                // 是否允许证书
                .allowCredentials(true);
    }
}

  3.实现corsFilter

代码里面通过实现corsFilter实现跨域

@Configuration
public class MyCorsConfig {

	private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }
 
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
	
}

在项目试验中,在使用springboot1.5.20.RELEASE的时候,@CrossOrigin与.WebMvcConfigurerAdapter 并没有生效,导致请求依然报跨域问题,CorsFilter可以正常使用,在springboot 2.2.* 里面,WebMvcConfigurer 能正常解决跨域问题,之前百度查找的时候,有人给出的解释为请求经过的先后顺序问题,请求会先进入到自定义拦截器中,而不是进入Mapping映射中,所以返回的头信息中并没有配置的跨域信息,浏览器就会报跨域异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值