2017-04-05 1 views
0

스프링 부트 앱을 개발 중입니다. 이미 인터넷에서 사용할 수있는 API (데모 용도로만 개발 됨)를 요청 (가져 오기)하고 데이터를 가져와야하는 요구 사항을 충족 시켰습니다. 해당 API는 CORS 요청을 차단했습니다. 브라우저에서 API를 치고 json 응답을 볼 수는 있지만 스프링 자바 코드에서 API를 사용할 수는 없습니다. 나는 403 금지 된 예외를 얻고있다. 어쨌든이 문제를 해결할 수 있습니까? 감사합니다CORS를 우회하여 CORS 차단 된 API에서 데이터를 가져 오는 방법은 무엇입니까?

자바 코드

String endPoint="www.api.blahblah.com"; (sample only) 

RestTemplate restTemplate = new RestTemplate(); 
ResponseEntity<String> response= restTemplate.getForEntity(endPoint+userName,String.class); 
+0

당신은 로컬 호스트에서 테스트? – user320676

+0

아니, 나는 자바 나머지 클라이언트에서 JSONP를 사용할 수 Heroku가 –

답변

0

당신이 JSONP 형식으로 API를 사용해야 할 수있는 데이터 및 바이 패스 CORS를 얻기 위하여

JSONP

그것은 당신을 허용 패딩과 JSON 형식의 너와 다른 도메인에있는 서버에서 데이터를 요청하십시오.

로컬 호스트에있는 경우 브라우저에 적합한 확장명으로 CORS 검사를 비활성화 할 수 있지만 (권장하지는 않지만) 외부 JSON API를 계속 사용할 수 있습니다. Allow-Control-Allow-Origin: *

난 당신이 너무 다른 브라우저와 유사 얻을 확신 :

다음은이 목표를 달성하기 위해 예를 크롬 확장 프로그램에 대한 있습니다.

+0

에 배포 한? 나는이이 대답은 내가이 질문의 목적을 패배 생각하는 서버를 제어 할 수있는 가정에만 –

+0

자바 스크립트와 함께 사용할 수 있습니다 생각; 서버를 제어하는 ​​경우 CORS 지원을 추가 할 수 있습니다. – mahemoff

0

서비스 공급자가 CORS (또는 JSONP와 같은 대체/해킹)를 통해 허용하지 않는 한 브라우저는 디자인에 의한 액세스를 제한합니다.

이 경우 유일한 현실적인 옵션은 API를 프록시하는 것입니다. 즉, 타사 API와 클라이언트간에 데이터를 전송할 자체 중간 서버를 설정하는 것입니다.

0

CORS은 브라우저에서 도메인 간 통신을 허용하는 W3C 사양입니다. CORS을 우회 할 필요가 없습니다. 브라우저로 처리되는 제한 인 Same Origin Policy을 전달해야합니다. https://www.html5rocks.com/en/tutorials/cors/

하지만 브라우저 SOP 외부에서 요청을하고 있기 때문에 참여해야하지 않습니다

은 내가 살펴보고 추천, 너무 그것에 대해 혼란스러워했다. 다른 이유로 인해 금지 된 오류 코드가 표시되는 것 같습니다.

확인 엔드 포인트가 몇 가지 특별한 매개 변수를 필요로하거나 성공 요청의 예를 경우 우리는 당신이 당신이 자바에서 재현 방법을 찾는 데 도움이 될 수 있다면.