jQuery를 사용하는 크로스 사이트 Ajax
-
20-09-2019 - |
문제
기존의 jQuery 플러그인이있어 많은 ajax 호출 (주로 JSON)이 있습니다. 나는 그것이 $ .get와 $ .post url이 동일한 도메인에서 나오지 않는다.
나는 JSONP에 대해 들었지만 누군가가 나에게 전체 과정에 대해 구체적인 모범을 줄 수 있는지 궁금했다. 가능한 경우 내 스크립트를 최소한으로 변경하고 싶습니다. proxy.php의 종류를 사용해야합니까?
시간 내 주셔서 감사합니다.
해결책
JSONP를 사용하면 크로스 사이트 호출을 수행 할 수 있습니다. 그 문제에 대해 jQuery 문서를 참조하십시오.
개념은 간단합니다 : 정상적인 ajax 호출 대신 jQuery는 <script>
당신의 태그 <head>
. 이 작업을 수행하려면 JSON 데이터를 함수 호출로 래핑해야합니다.
서버는 그러한 방식으로 정보를 보내야합니다 (PHP 예).
$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';
그런 다음 jQuery를 사용하여 해당 정보를 가져올 수 있습니다.
$.ajax({
dataType: 'jsonp',
jsonp: 'jsonp_callback',
url: 'http://myotherserver.com/getdata',
success: function () {
// do stuff
},
});
자세한 내용은 다음을 참조하십시오. JSONP는 무엇입니까?
다른 팁
원격 도메인을 제어 할 수 있거나 원격 도메인에 허용되는 경우 CrossDomain.xml 당신은와 같은 라이브러리에 떨어질 수 있습니다 flxhr 그것과 함께 jQuery 플러그인.
JSONP 대신 CORS를 사용하여 FF, Chrome, Safari와 함께 작동 할 수도 있습니다. CORS는 설정이 덜 번거 롭고 서버 측에서 필터 만 필요합니다.
이 기사를 살펴보십시오. Well은 설명하고 비슷합니다. 제약 조건 만 IE 가이 버전의 FF를 지원하지 않는다는 것입니다. Chrome에는 몇 가지 문제가 있습니다.
http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/