클라이언트 측 스크립트에서 원격 웹 서비스를 어떻게 소비 할 수 있습니까? [닫은

StackOverflow https://stackoverflow.com/questions/324771

문제

내가 이해 한 바에 따르면, 현재 브라우저의 "동일한 원산지 정책"시행으로 인해 XMLHTTPREQUEST에서 JavaScript의 원래 도메인과 다른 도메인으로 전송 된 데이터를 얻는 것은 불가능합니다.

이 문제에 관한 경험이 거의 없으므로 웹 서비스가 JavaScript에서 사용할 수없는 것에 대해 혼란스러워합니다. AJAX 기능이있는 웹 애플리케이션이 다른 도메인에서 제공하는 서비스를 호출하지 않고만 스스로 상호 작용할 수 있다는 것을 의미합니까? "매시업"은 어떻게 작동합니까? 서비스가 서버 측면 소비 된 후 데이터는 로컬 AJAX 호출을 통해 클라이언트에게 전달됩니다. 모르겠어요.

클라이언트 측 서비스 소비를 달성하는 유일한 방법은 대상 웹 서비스의 도메인에서 직접 JavaScript 파일을 검색하는 것입니다. <script> 태그, API를 사용하여 원격 도메인과 상호 작용하십시오.

누구든지 나를 깨달을 수 있습니까?

도움이 되었습니까?

해결책

당신의 질문에서 당신은 언급했습니다u003Cscript> trick. JSONP is based on that. 거의 3 년 전에 Bob Ippolito가 공식적으로 제안했습니다.. 그것은 당신에게 스크립트의 원점과 대화 할 권리를 부여하지 않습니다. 원점은 다른 포함 된 것이 아니라 웹 페이지에 의해 정의됩니다. 서버가 코드에 정의되어야하는 Calback 함수로 JSON을 랩핑하고 실행되기 때문에 작동합니다.u003Cscript> when loaded. Most famous example of JSONP would be Yahoo services, including Flickr.

또 다른 기술은 Window.Name을 사용하여 정보를 전송하는 것입니다. 이 기술은 4 개월 전 Kris Zyp가 자세히 설명했습니다.. 또한 그의 기사는 Window.Name Transport와 JSONP를 비교합니다. 이 새로운 운송을 지원하는 유명 서비스 제공 업체는 모르겠습니다. 분명히 시간이 지남에 따라 변할 것입니다.

물론, 나는 다가오는 것을 언급해야합니다 Microsoft XdomainRequest. IE8과 함께 배송 될 계획이며 다른 공급 업체는이를 지원하기 위해 노력하지 않았지만 HTML 5에 포함시키기 위해 제시되었습니다. XDR은 유용한 기능이지만, 참여하기 전에 여러 번 변경 될 것으로 생각됩니다. 받아 들여졌다.

링크를 살펴보면 지금 까지이 모든 방법에는 타사 서버에서 일정 수준의 협력이 필요하다는 것을 알고있을 것입니다. 마음대로 임의의 서비스를 사용할 수 없습니다. 비협조적인 서비스를 사용해야하는 경우 유일한 솔루션은 의심스러운 합법성, 성능 감소, 서버의로드 증가, 사용자 브라우저와의 연결 수가 감소하는 모든 관련 문제로 자신의 서버를 통해이를 프록시하는 것입니다. 서버 등.

다른 팁

당신이 설명하는 접근 방식을 사용하여 동일한 원산지 정책을 중심으로 작동하는 JSONP를 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top