jQuery AJAX 도메인 간 문제
제공된 시나리오에서는 두 개의 PHP 파일(test.php 및 testserver.php)이 다음을 사용하여 통신합니다. jQuery의 AJAX, 도메인 간 제한은 별도의 서버에 있을 때 발생합니다. 서버 A는 test.php(예: localhost)를 호스팅하고 서버 B는 testserver.php(예: 웹 서버)를 호스팅합니다.
문제:
AJAX 요청이 성공적으로 실행되었음에도 불구하고 파일이 동일한 서버에 있으면 다른 서버에 있으면 오류와 함께 실패합니다. 이는 SOP(Same-Origin Policy) 때문입니다.
해결책:
이러한 도메인 간 문제를 해결하기 위해 JSONP(JSON with Padding)가 사용됩니다. JSONP는 콜백을 활용하여 브라우저 제한을 우회합니다.
구현:
jQuery(test.php):
$.ajax({ url: "http://domain.example/path/to/file/testserver.php", dataType: 'jsonp', // Notice! JSONP (lowercase 'P') success: function(json){ // Handle JSON response (an array) alert("Success"); }, error: function(){ alert("Error"); } });
PHP (testserver.php):
<?php $arr = array("element1","element2",array("element31","element32")); $arr['name'] = "response"; $callbackName = $_GET['callback']; // Get the callback name from GET params echo $callbackName."(".json_encode($arr).");"; ?>
설명: