使用Java Config的全局CORS配置不起作用

我正在努力使用Java配置来运行Global CORS配置。 我不确定它是否是一个已知问题,因为其他人也有同样的问题: Spring Global CORS配置不起作用但控制器级别配置没有

无论如何,让我进一步阐述我想要做的事情:

我正在使用Spring 4.2.3.RELEASE(没有弹簧启动)。 我正在尝试使用Java配置配置全局CORS配置,以便我可以使用属性文件中的@Value注入CORS域(allowed-Origin)。 因为据我所知,我不能在mvc xml名称空间中为allowed-origin注入值,如下图所示(如果您知道任何其他解决此问题的方法,请告诉我):

   

从Spring参考文档这里 ,我试图使用java配置来配置Global CORS来解决问题。 但是,我无法让CORS工作。 代码在应用程序启动期间调用,但客户端的调用始终返回

请求的资源上不存在“Access-Control-Allow-Origin”标头。 因此不允许Origin’http:// localhost:3000 ‘访问

 @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Value("${vrm.cors.domain}") //vrm.cors.domain=/** private String corsDomain; @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"). .allowedOrigins(vrm.cors.domain); } } 

根据这个答案https://stackoverflow.com/a/33823253

你可以像这样启用cors:

 @EnableWebSecurity @Configuration class SecurityConfig extends WebSecurityConfigurerAdapter { private final AppProperties appProperties; @Autowired public SecurityConfig(AppProperties appProperties) { this.appProperties = appProperties; } @Override protected void configure(HttpSecurity http) throws Exception { http .addFilterBefore(corsFilter(), SessionManagementFilter.class) //adds your custom CorsFilter .authorizeRequests() .antMatchers("/**") .permitAll() .and() .csrf() .disable(); } private CorsFilter corsFilter() { return new CorsFilterAdapter( appProperties.getClientUrls(), appProperties.getHeaders(), appProperties.getMethods()) .corsFilter(); } } 

其中CrosFilterAdapter是这样的:

 public class CorsFilterAdapter { private final String[] clientUrls; private final String[] headers; private final String[] methods; public CorsFilterAdapter(String clientUrls, String headers, String methods) { this.clientUrls = clientUrls.split(","); this.headers = headers.split(","); this.methods = methods.split(","); } public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(false); for (String clientUrl : clientUrls) { config.addAllowedOrigin(clientUrl); } for (String header: headers) { config.addAllowedHeader(header); } for (String method : methods) { config.addAllowedMethod(method); } UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }