2009-07-29 5 views

답변

11

그것을하기 때문에 XMLHttpRequests를위한 브라우저에서 구현 크로스 도메인 요청에 대한 제한의. JSONP를 형식으로 사용하여이 문제를 해결할 수 있습니다. 그렇지 않으면 요청에 대해 서버 측 프록시가 필요합니다. http://jquery.com

주에 ajax documentation에서 인용

: '스크립트'또는 'JSONP'는 데이터 형식 일 때 모든 (동일하지 도메인) 원격 요청이 GET으로 을 지정해야합니다 (그것 때문에 DOM 스크립트 태그를 사용하여 스크립트를로드합니다. XMLHttpRequest 객체가 필요한 Ajax 옵션 은 이러한 요청에 사용할 수 없습니다. 완료 및 성공 함수는 완료시 이 호출되지만 은 XHR 개체를받지 않습니다. beforeSend 및 dataFilter 함수는 이 호출되지 않습니다.

6

는 말한다 :

크로스 원산지 자원 공유 (CORS) 웹 페이지가 다른 도메인에 대한 XMLHttpRequests를 만들 수있는 메커니즘입니다. 1 이와 같은 "교차 도메인"요청은 동일한 출처 보안 정책에 따라 웹 브라우저에서 금지 될 수 있습니다. CORS는 브라우저와 서버가 교차 출격 요청을 허용할지 여부를 결정하기 위해 상호 작용할 수있는 방법을 정의합니다. 2 동일한 출처 요청 만 허용하는 것보다 강력하지만 모든 출처 크로스 요청을 허용하는 것보다 안전합니다.

은 PHP 들어 그것은 header() 함수를 사용하여 수행된다

<?php 
header("Access-Control-Allow-Origin: http://example.com"); 
?> 

CORS는 JSONP 패턴 현대 대안으로 사용될 수있다. JSONP는 GET 요청 방법 만 지원하지만 CORS는 다른 유형의 HTTP 요청도 지원합니다. CORS를 사용하면 웹 프로그래머가 일반 XMLHttpRequest를 사용하여 JSONP보다 나은 오류 처리를 지원할 수 있습니다. 반면 JSONP는 CORS 지원을 배제하는 레거시 브라우저에서 작동합니다.CORS는 대부분의 최신 웹 브라우저에서 지원됩니다. 또한 외부 사이트가 인 JSONP가 XSS 문제를 일으킬 수 있지만 CORS는 웹 사이트에서 에 대한 응답을 수동으로 구문 분석하여 보안을 보장합니다.

JSONP 또는 "JSON with padding"은 (는) JavaScript에서 사용되는 통신 기술입니다. 다른 도메인에있는 서버에서 데이터를 요청하는 방법을 제공합니다. 이는 동일한 출처 정책 인 이기 때문에 일반적인 웹 브라우저에서는 금지 된 것입니다.

관련 문제