2014-07-24 1 views
2

우리는 휴식 API를 만들기 위해 Java Spring을 사용하고 있습니다. 그리고 우리는 frontend를 위해 angularjs를 사용합니다. 나머지 API는 하나의 도메인에 있고 angularjs는 다른 도메인에 있습니다. 처음에는 각도에서 나머지 API로 'POST'요청을하면 CORS 오류가 발생했습니다. 그런 다음 CORS 필터를 백엔드에서 설정하여이 문제를 해결했습니다. 그러나 우리가 get 요청을하려고 할 때, 그것은 401 unauthorized error를 던지고있다. 그 이유는 요청에 content-type이 application/json이고 헤더에 '인증'이 있기 때문에 (우리는 기본 인증을 사용하고 있기 때문에) 요청은 '간단한 요청이 아닙니다'라는 것입니다. 따라서 브라우저는 'GET'요청을 보내기 전에 서버에 프리 플라이트 'OPTIONS'요청을 보냅니다. 그리고 401 에러는 url을 가로 채어 봄 보안에 의해 'OPTIONS'요청을 위해 던져진다. 'OPTIONS'요청에 자격 증명이 없기 때문입니다. 따라서이 문제를 극복하기 위해 spring-security.xml에서 intercept url에 method = "GET"을 삽입했습니다. 이로 인해 문제가 해결되었습니다. 그러나 이것을 가로 채기 URL에 지정하는 것이 좋습니다. 또한 우리가 따라하는 과정, 좋은 연습입니까?스프링과 각도 JS 사이에서 CORS를 처리하는 모범 사례가 있습니까?

답변

0

것이 가장 좋은 방법인지 잘 모르겠지만, 우리가 같은 문제를 가지고 있었고 spring-security.xml의 옵션 방법에 대해 구체적으로 ROLE_ANONYMOUS을 설정하여 고정 :

<intercept-url pattern="/users" method="OPTIONS" access="ROLE_ANONYMOUS"/> 
관련 문제