>웹 프론트엔드 >JS 튜토리얼 >JSONP는 Ajax 도메인 간 액세스를 어떻게 처리합니까?

JSONP는 Ajax 도메인 간 액세스를 어떻게 처리합니까?

php中世界最好的语言
php中世界最好的语言원래의
2018-04-04 14:13:011561검색

이번에는 JSONP가 Ajax 교차 도메인 액세스를 처리하는 방법을 보여 드리겠습니다. Ajax 교차 도메인 액세스를 처리할 때 JSONP가 처리하는 주의 사항은 무엇입니까?

몇일 전, 프런트 엔드 웹 페이지에서 정보를 반환하기 위해 백그라운드 웹 서비스 메서드를 비동기적으로 호출해야 하는 새로운 요구 사항이 직장에 있었습니다. 구현 방법은 여러 가지가 있는데, 완료 후 로컬에서 디버깅할 때는 문제가 없었는데, 백그라운드 서비스 호출이 응답하지 않았습니다. 코드는 많이 변경되지 않았습니다. 유일한 수정 사항은 jQuery의 ajax 메소드의 URL 주소입니다. 이것이 문제인가요? 검사하고 디버깅한 결과 동일한 원본 정책이 문제를 일으키는 것으로 나타났습니다. JavaScript 또는 jQuery가 웹 프런트 엔드 개발에 자주 사용되는 동적 스크립트 기술이라는 것을 알고 있습니다. JavaScript에는 "Same-Origin Policy"라는 매우 중요한 보안 제한 사항이 있습니다. 이 정책은 JavaScript 코드가 액세스할 수 있는 페이지 콘텐츠에 중요한 제한을 둡니다. 즉, JavaScript는 이를 포함하는 문서 또는 스크립트와 동일한 도메인 이름 아래의 콘텐츠에만 액세스할 수 있습니다. 다른 도메인 이름의 스크립트는 하위 도메인에서도 서로 액세스할 수 없습니다.

하지만 때로는 도메인 간 작업이 불가피할 때도 있습니다. 이때 "동일 출처 정책"은 어떻게 해야 합니까? JSONP 교차 도메인 GET 요청을 사용하는 것은 일반적인 솔루션입니다. JSONP 교차 도메인이 구현되는 방법을 살펴보고 JSONP 교차 도메인의 원리를 살펴보겠습니다.

여기에 JSONP가 언급되어 있는데 JSON과 차이점이 무엇인지 묻는 사람이 있습니다. Baidu Encyclopedia에 다음과 같은 설명이 있습니다.

JSON(JavaScript Object Notation) 은 경량 데이터 교환입니다. 체재. 이는 JavaScript(표준 ECMA-262 3판 - 1999년 12월)의 하위 집합을 기반으로 합니다. JSON은 완전히 언어 독립적인 텍스트 형식을 사용하지만 C 언어 계열(C, C++, C#, Java, JavaScript, Perl, Python 등 포함)과 유사한 습관도 사용합니다. 이러한 속성은 JSON을 이상적인 데이터 교환 언어로 만듭니다. 사람이 읽고 쓰기가 쉽고, 기계가 파싱하고 생성하기도 쉽습니다(네트워크 전송 속도가 빠릅니다).

JSONP(JSON with Padding)는 주류 브라우저의 도메인 간 데이터 액세스 문제를 해결하는 데 사용할 수 있는 JSON의 "사용 모델"입니다. 동일 출처 정책으로 인해 일반적으로 server1.example.com에 위치한 웹 페이지는 HTML