> 웹 프론트엔드 > JS 튜토리얼 > JSONP는 jQuery AJAX 도메인 간 문제를 어떻게 해결할 수 있나요?

JSONP는 jQuery AJAX 도메인 간 문제를 어떻게 해결할 수 있나요?

DDD
풀어 주다: 2024-12-22 22:15:13
원래의
345명이 탐색했습니다.

How Can JSONP Solve jQuery AJAX Cross-Domain Issues?

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).");";
?>
로그인 후 복사

설명:

  1. jQuery의 $.ajax() 메서드는 'jsonp'를 사용하도록 수정되었습니다. dataType.
  2. $.ajax()에 전달된 콜백 함수는 PHP에 할당됩니다. 변수 $callbackName.
  3. PHP 스크립트는 callbackName 값을 사용하여 함수 호출 내에 JSON 데이터를 포함합니다.
  4. 이를 통해 브라우저는
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿