JSONP

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
JSONP 로고

JSONP(JSON with Padding 또는 JSON-P[1])는 클라이언트가 아닌, 각기 다른 도메인에 상주하는 서버로부터 데이터를 요청하기 위해 사용된다. 2005년에 Bob Ippolito가 제안하였다.[2] JSONP는 동일-출처 정책을 우회하는 데이터의 공유를 가능하게 한다. 이 정책은 페이지의 출처 밖에서 가져온 미디어 DOM 요소나 XHR 데이터를 읽기 위해 자바스크립트를 실행하는 것을 허용하지 않는다. 사이트의 스킴, 포트 번호, 호스트 이름의 집합은 출처로 식별된다. 상속 비보안 문제로 인해 JSONP는 CORS로 대체되고 있다.

JSONP의 동작 원리[편집]

HTML <script> 요소는 외부 출처로부터 조회된 내용을 실행하는 것이 허용되지 않는다. 순수 JSON 데이터로 응답하는 서비스들은 CORS 채택 이전까지는 도메인 간 데이터 공유가 불가능하였다. 이를테면 외부 서비스 http://server.example.com/Users/1234로 요청하면 사람 Foo의 기록을 JSON 포맷으로 반환하는데 정의상 자바스크립트의 오브젝트 이니셜라이저 문법을 준수한다.

1 {
2     "Name": "Foo",
3     "Id": 1234,
4     "Rank": 7
5 }

도메인 간에 데이터를 사용하려고 시도하면 자바스크립트 오류가 발생한다.

1 <script type="application/javascript"
2         src="http://server.example.com/Users/1234">
3 </script>

각주[편집]

  1. “Safer cross-domain Ajax with JSON-P/JSONP”. 《JSON-P.org》. 2016년 3월 4일에 원본 문서에서 보존된 문서. 2011년 10월 30일에 확인함. 
  2. Ippolito, Bob (2005년 12월 5일). “Remote JSON - JSONP”. 《Bob Ippolito on Haskell, Python, Erlang, JavaScript, etc.》 (영어). 2012년 6월 8일에 원본 문서에서 보존된 문서. 2017년 2월 10일에 확인함. 

외부 링크[편집]