2016-10-21 3 views
0

내 응용 프로그램은 gulp 및 tomcat이라는 두 개의 서버에 의해 구분됩니다. 앞면은 뒤쪽 스프링 부트의 AngularJS입니다. 3000 내 API에 : 나는 로컬 호스트에서 요청을 보내 8080CORS 허용되지 않음 POST 방법 사용

포트 3000 및 바람둥이 작업 꿀꺽 (로컬 호스트 : 8080/API를/등록) POST 방법과 나의 봄 응답 HTTP 상태 코드를 사용하여 403

프리 플라이트 요청에 대한 응답이 액세스 제어 검사를 통과하지 못합니다. 아니요 요청한 리소스에 'Access-Control-Allow-Origin'헤더가 있습니다. 따라서 'http://localhost:3000'의 출처는 허용되지 않습니다. . 응답의 HTTP 상태 코드는 403입니다.

컨트롤러에 추가하려고했습니다. 주석 @CrossOrigin하지만 도움이되지 않았습니다.

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

위의 코드 도움 만 GET 요청에 대해 :

또한, 나는 내 WebConfig에 다음 코드를 추가했다. 왜 작동하지 않는지 알 수 있습니까?

+0

당신은 사용자 정의 필터를 정의 하는가? 'GenericFilterBean' 또는 일부 클래스를 확장하는 것은 무엇입니까? – Gregg

+0

CsrfCookieGeneratorFilter는 CSRF 토큰을 각도로 보내는 OncePerRequestFilter를 확장했습니다. – Doni

+0

필자는 Filter in place가있는 경우 CORS 자료가 WebMvcConfigurer 또는 주석을 통해 작동하지 않는 문제에 부딪혔습니다. 내 필터에 CORS 헤더 정보를 모두 추가해야합니다. 당신은 그것을 시도하고 당신이 더 나은 결과를 얻는 지 볼 수 있습니다. – Gregg

답변

0

Tomcat의 구성에 다음 코드를 추가하여 문제를 해결했습니다.

<filter> 
    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CorsFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

관련 문제