2016-03-25 54 views
1

我有我的服务器运行localhost:8080(春季启动应用程序)和我的localhost:3000(角应用程序)前端。问题是我想从前端向我的后端服务器发出请求。我对cors很熟悉,但它不适合我。我说这个我的服务器:春季开机 - cors不工作

@Bean 
WebMvcConfigurer corsConfigurer() { 
    return new WebMvcConfigurerAdapter() { 
     @Override 
     public void addCorsMappings(CorsRegistry registry) { 
      registry.addMapping("/**").allowedOrigins("http://localhost:3000"); 
     } 
    }; 
} 

,但我仍然得到

的XMLHttpRequest无法加载http://localhost:8080/cars。该请求被重定向到'http://localhost:8080/login',对于需要预检的跨源请求,该请求不被允许。

怎么了?

回答

0

根据官方博客文章CORS support in Spring Framework,如果您已启用Spring Security您必须使用filter based CORS support

@Configuration 
public class MyConfiguration { 

    @Bean 
    public FilterRegistrationBean corsFilter() { 
     UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); 
     CorsConfiguration config = new CorsConfiguration(); 
     config.setAllowCredentials(true); 
     config.addAllowedOrigin("http://domain1.com"); 
     config.addAllowedHeader("*"); 
     config.addAllowedMethod("*"); 
     source.registerCorsConfiguration("/**", config); 
     FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); 
     bean.setOrder(0); 
     return bean; 
    } 
}