>  기사  >  웹 프론트엔드  >  jsonp란 무엇인가요? jsonp의 원리에 대한 자세한 설명

jsonp란 무엇인가요? jsonp의 원리에 대한 자세한 설명

不言
不言원래의
2018-10-15 10:51:574336검색

jsonp란 무엇인가요? 무슨 소용이 있나요? 이 글에서는 jsonp에 대해 소개하고 도움이 필요한 친구들이 참고할 수 있도록 하겠습니다.

더 이상 고민하지 말고 바로 본문으로 들어가겠습니다~

jsonp가 무엇인가요?

인터넷에서 jsonp의 정의를 찾을 수 있습니다. JSONP(JSON with Padding)는 주류 브라우저의 도메인 간 데이터 액세스 문제를 해결하는 데 사용할 수 있는 JSON의 "사용 모드"입니다. 동일 출처 정책으로 인해 일반적으로 다음 지역에 위치합니다. server1.example.com의 웹페이지는 server1.example.com 이외의 서버와 통신할 수 없으며, HTML 3f1c4e4b6b16bbbd69b2ee476dc4f83a 요소는 예외입니다. 3f1c4e4b6b16bbbd69b2ee476dc4f83a 요소의 공개 정책을 사용하면 웹페이지는 다른 소스에서 동적으로 생성된 스크립트를 가져올 수 있습니다. JSON 데이터이며, 이러한 사용 패턴을 JSONP라고 합니다. 사실 간단히 말해서 jsonp는 도메인 간 요청 문제를 해결하는 데 사용되는 경량 데이터 전송 형식입니다.

jsonp

ajax 요청은 동일 출처 정책의 영향을 받으며 도메인 간 요청을 허용하지 않는다는 원칙을 분석해 보겠습니다. 그러나 스크립트 태그의 src 속성에 있는 링크는 크로스 도메인 js에 액세스할 수 있습니다. 이 기능을 사용하면 서버가 더 이상 JSON 형식으로 데이터를 반환하지 않지만 src에서 호출되는 특정 함수를 호출하는 js 코드를 반환하므로 교차 도메인 기능이 구현됩니다.

jsonp의 예를 살펴보겠습니다.

<!DOCTYPE html>
 <html> 
 <head> 
 <title>GoJSONP</title> 
 </head> 
 <body> <
 script type="text/javascript">
    function jsonhandle(data){
        alert("age:" + data.age + "name:" + data.name);
    }
</script> <script type="text/javascript" src="jquery-1.8.3.min.js">
</script> <script type="text/javascript">
    $(document).ready(function(){
        var url = "http://www.practice-zhao.com/student.php?id=1&callback=jsonhandle";
        var obj = $(&#39;<script><\/script>&#39;);
        obj.attr("src",url);
        $("body").append(obj);
    });
</script>
 </body> 
 </html>

여기에 스크립트 태그가 동적으로 추가되고, src는 크로스 도메인 PHP 스크립트를 가리키며, 위의 js 함수 이름이 콜백 매개변수로 전달됩니다. PHP 코드 살펴보기 작성 방법:

<?php 
$data = array( &#39;age&#39; => 20, &#39;name&#39; => &#39;张三&#39;, ); 
$callback = $_GET[&#39;callback&#39;]; 
echo $callback."(".json_encode($data).")"; 
return;

PHP 코드는 JS 문, 즉

이때 페이지에 접속하면 동적으로 스크립트 태그가 추가되고, src는 PHP 스크립트를 가리키며, 반환되는 JS 코드가 실행되고 프롬프트 상자가 성공적으로 나타납니다.
따라서 JSONP는 도메인 간 요청에 대한 액세스를 원격 JS 코드 실행으로 전환합니다. 서버는 더 이상 JSON 형식으로 데이터를 반환하지 않지만 JSON 데이터를 수신 매개변수로 사용하는 함수 실행 코드를 반환합니다.

이 글은 여기서 끝납니다. 더 많은 jsonp 관련 콘텐츠를 보려면 PHP 중국어 웹사이트를 팔로우하세요! ! !

위 내용은 jsonp란 무엇인가요? jsonp의 원리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.