2016-03-25 8 views
1

私のサーバーはlocalhost:8080(spring boot app)と私のフロントエンドはlocalhost:3000(angular app)で動作しています。問題は、フロントエンドからバックエンドサーバーに要求を出したいということです。私はコルスに精通していますが、それは私の形では機能しません。スプリングブート - 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; 
    } 
}