2016-03-25 71 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; 
    } 
}