java后端配置跨域不生效、无效

作者: adm 分类: java 发布时间: 2022-12-27

首先我已经配置了跨域

@Configuration
public class CrosConfig implements WebMvcConfigurer
{
	  @Override
	  public void addCorsMappings(CorsRegistry registry) {
     	registry.addMapping("/**")
             	.allowedOrigins("*")
             	.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
             	 .allowCredentials(true)
              	.maxAge(3600)
              	.allowedHeaders("*");
   }
}

上述代码就是解决跨域问题一个简单的处理方式,正常情况下是生效的。
但我配置之后,前端访问仍报跨域的错。

debug的时候发现前端请求没有走到跨域这里,就被spring-sercurity先拦截了。

更换跨域配置,设置跨域的执行优先即即可。

@Configuration
public class CrosConfig{
	@Bean
    public FilterRegistrationBean corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean cros = new FilterRegistrationBean(new CorsFilter(source));
		//设置优先级最高
        cros.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return cros;
    }
}

问题归纳总结
跨域可能被优先级更高的拦截器阻挡,从而发生配置了跨域但不生效的情况。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!