2011-12-01 3 views
0

나는이 문제를 해결하기 위해 노력했지만 성공하지는 못했습니다.SproutCore를 사용한 서비스에 대한 도메인 간 요청

내 도메인에 웹 앱이 있습니다 (예 : www.myDomain.com). 다른 도메인에있는 서비스를 호출해야합니다. www.anotherDomain.com/service.do?

저는 SproutCore의 SC.Request.getUrl(www.anotherDomain.com/service.do?)을 사용하여 해당 서비스를 호출하고 있습니다.

출처 www.myDomain.com이 (가) 액세스 제어 허용 원점에서 허용하지 않는 오류가 발생합니다.

dev 단계에 있고 sc-server을 사용하면 프록시를 사용하여 문제가 해결되었습니다. 이제 실제 서버에 앱을 배포 했으므로 프록시를 설정 한 모든 행을 실제 도메인 이름으로 바꿨습니다. 나는 그 오류를 다시 받기 시작했다.

문제는 입니다. 어떤 변경도 다른 도메인의 서버에 적용 할 수 없습니다.. 내가 봤던 모든 게시물은 다른 도메인의 다른 서버가 access-control-allow-origin 헤더를 제공해야하고 이것이 OPTIONS 동사를 지원해야한다고 말합니다.

제 질문은 SproutCore의 SC.Request.getUrl() 메서드를 사용하여 해당 서비스에 연결할 수 있습니까?

또한 내가 읽은 다른 게시물은 간단한 GET 요청이 미리 조사되어서는 안된다고 언급했습니다. 그렇다면 내 요청이 GET 대신 OPTION이되는 이유는 무엇입니까?

미리 감사드립니다. : D

답변

0

이것은 Sproutcore 문제가 아닙니다. 그것은 자바 스크립트 같은 기원 정책 문제입니다.

프로덕션 서버를 수정할 수 없으면 자신의 프록시 서버를 개발하고 프록시를 실제 서비스에 적용 할 수있는 옵션이 없습니다.

이것은 프로덕션 환경에서 sc-server를 대체합니다.

이 서버가 수행하는 모든 작업은 들어오는 요청을 받아 www.anotherDomain.com/?service.do으로 전달하는 것입니다. 당신은 할 필요가

반드시 전달 된 모든 매개 변수, 쿠키, 헤더는 HTTP 동사 등 .... 지금은 오류가 더 많은 곳에서 발생할 수 있기 때문에

이 훨씬 이상적에서입니다. 실제 서비스가 실패 했습니까? 프록시가 실패 했습니까? 당신은 다른 도메인을 수정할 수있는 경우 등

, 당신은

1) 거기 SC 응용 프로그램을 배포 할 수 있습니다.
2) 도메인 간 요청을 할 수 있도록 CORS 헤더를 넣으십시오.

+0

흠. 나는 그것을 시도하고 그것이 어떻게되는지 보게 될 것이다. 프록시 설정 가져 오기에 대한 제안 사항이 있습니까? 나는 전에 그것을 한 적이 없다. – codeBearer

+0

선택하는 서버 기술에 따라 다릅니다. 단지 프록시 서버를 개발하기위한 검색은 수 많은 예제가 있어야합니다. – hvgotcodes

+0

실제로 서비스를 호출하고 XML을 얻는 JSP 페이지를 작성하여 문제를 해결했습니다. SproutCore 응용 프로그램은 이제 같은 도메인에있는 JSP 페이지를 호출하고 JSP는 외부 서비스로 호출을 보냅니다.:) 프록시가 유일한 방법이기 때문에 도움을 주셔서 감사합니다. :) – codeBearer

관련 문제