java后端配置跨域不生效、无效
首先我已经配置了跨域
@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; } }
问题归纳总结
跨域可能被优先级更高的拦截器阻挡,从而发生配置了跨域但不生效的情况。