2016-07-09 7 views
0

임베디드 tomcat 서버 (포트 : 8080)에서 실행되는 스프링 부트 MAVEN 애플리케이션을 작성했습니다. 포트 8000에서 실행중인 다른 nodeJS Express 서버가 있습니다. 이제 포트 8000에서 포트 8080을 프록시했습니다. 따라서 "http://localhost:8080/ *"의 주소는 스프링 부트 응용 프로그램의 코드로 이동합니다. 스프링 부트 응용 프로그램에서 필요한 위치에 중단 점을 유지하여이를 테스트하고 있습니다. 봄 부팅에서 코드가 실행 된 후 XMLHttpRequest를로드 할 수 없습니다.

그러나, 나는
XMLHttpRequest cannot load http://localhost:8080/users/?_=1468052674994. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. 

받고 있어요 "/ 사용자 /"봄 부팅 응용 프로그램에서 내 요청 매핑입니다.

나는 포트 8080을 호스트에 "노출"시켜야한다는 것을 알게되었다. https://www.wouterdanes.net/2014/04/11/continuous-integration-using-docker-maven-and-jenkins.html 위의 기사에서 docker가이 작업을 수행 할 수 있다고 말합니다. 나는 이것으로 시작하는 것을 많이 이해하지 못했다. 아무도 나를 도와주세요.

답변

1

XMLHttpRequest는 브라우저에서 Ajax 요청을 작성하는 데 사용됩니다. 악용을 방지하기 위해 브라우저는 '동일 출처 정책'을 사용하여 요청을 일으키는 페이지와 다른 위치에서 리소스를로드하지 못하도록합니다. 동일한 IP이지만 다른 포트를 사용하는 경우에도 '다른 위치'로 취급됩니다.

요청을로드하는 페이지의 특수 헤더를 사용하여이 문제를 해결할 수 있습니다. 이 매우 복잡하게 들릴지 모르지만, 그것의 이해가

Same-origin_policyCross-origin_resource_sharing

솔루션

는 XMLHttpRequest를 만들 것입니다 페이지와 첫 번째 응답에서 설명, 이 포함되어야합니다 헤더 :

출입 통제 허용 출처 : http://localhost:8080

0

스프링 레스트 API가 구해졌습니다. @CrossOrigin (origins = "http://localhost:8000") 컨트롤러에 주석을 달아 문제가 해결되었습니다. 이 코드는 모든 컨트롤러에서 반복됩니다. 효율적인 솔루션을 찾고 있습니다.

관련 문제