2010-08-21 5 views
22

내 사용자가에있는 경우 내 자신의 웹 페이지에, 만약 내가 알고 http://example.com/responder.php
동일 기원 정책 - AJAX 및 사용하여 공개 API

: http://www.example.com/form.php

내가 해당 페이지에서 아약스 요청을

동일한 출처 정책 (하위 도메인이 다름)으로 인해 실패합니다. 요청 및 서버는 분명히 다른 경우

입니다 내가 이해하려고 노력하고, 그것을 어떻게 AJAX 요청은 플리커와 같은 API 년대에서 데이터를 가져올 수있다.


편집 :

예 : 왜 코드가 작동합니까?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...' 

(Referred this Community Wiki) 는 Cross Origin Resource Sharing를 사용합니까?

감사합니다.

답변

17

은 같은 기원 정책를 해결하기 위해 몇 가지 알려진 방법이 있습니다. 한 가지 일반적인 기술은 JSONP과 같이 "스크립트 태그 삽입"을 사용하는 것입니다. <script> 태그는 동일한 출처 정책에 의해 제약을받지 않기 때문에 제 3 자 도메인의 스크립트는 제공된 콜백 함수와 상호 작용하는 실행 가능 코드를 제공 할 수 있습니다. 당신은 더 주제에 독서를 위해 다음 문서에서 "팁과 트릭"섹션을 확인 할 수 있습니다 :

또한 체크 아웃에 관심이있을 수 있습니다 다른 기술에 대한 자세한 독서에 대한 다음과 같은 스택 오버플로 포스트는 같은 기원 정책 해결하려면 :


UPDATE : 또한 업데이트 된 질문 :

$.getJSON()에 jQuery를 문서에서 인용 : "콜백 ="

URL이 문자열을 포함하는 경우 URL에서 요청은 대신 JSONP로 처리됩니다.

+0

JavaScript가 반환 된 원시 데이터에 액세스 할 수 없으므로 같은 출처 정책에서 면제됩니다. 그것은 당신이 제공하는 기능과 상호 작용하는 실행 코드를 제공하는 제 3 자에 달려 있습니다. – Quentin

+1

@ David : 감사합니다. 더 정확한 내 대답 업데이트 :) –

+1

aha! 이런 모든 트릭을 수행하는 jQuery가 백그라운드에서 처리합니다. :) NEAT! http://insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html – DMin

관련 문제