2012-01-30 3 views
2

.NET에서 JSONP 메시지를 구문 분석하고 해당 메시지에서 JSON을 찾아야합니다. 유효한 JSONP 메시지를 설명하는 최신 사양이 있습니까?여전히 유효한 JSONP로 간주되는 사양이 있습니까?

Bob Ippolito가 JSONP 메시지에 거의 모든 JavaScript 코드가 포함될 수있는 첫 번째 JSONP 제안을 지정하여 this blog post (2005 년부터)을 발견했습니다.

또한 callback이라는 요청 URI 매개 변수에 지정된 함수에 대한 함수 호출 만 허용하는 json-p.org에서 아마 more recent specification을 발견했습니다.

마지막 Wikipedia 말한다 :

패딩 (접두사) 브라우저의 실행 컨텍스트 내에서 정의되는 콜백 함수의 이름은 일반적이지만, 는 또한 가변 할당 수있다 if 문 또는 기타 JavaScript 문 JSONP 요청 (즉, JSONP 사용 패턴 다음에 요청)에 대한 응답은 JSON이 아니며 JSON으로 구문 분석 된 이 아닙니다. 반환 된 페이로드는 임의의 JavaScript 표현 일 수 있으며 JSON을 전혀 포함 할 필요가 없습니다. 그러나 은 일반적으로 일부 JSON 형식의 데이터에서 함수를 호출하는 JavaScript 조각입니다.

올바른 JSONP 응답을 내리고 어떤 JavaScript 구성이 허용되는지에 대한 전역 정의가 있습니까? 현재 웹 브라우저에서 수용 할 수있는 JavaScript 코드 (예 : application/javascript 콘텐츠 유형)가 있어야 하나?

답변

2

JSONP는 언어가 아닌 패턴이므로 (JSON의 경우와 마찬가지로) 표준이 없습니다.

이름의 의미는 함수 호출에서 유효한 JSON 객체를 래핑한다는 의미입니다.

실제로 응답에 포함될 내용을 알려주는 "사양"은 APIyou're subscribing toto document에 대한 것이어야합니다.

2

문자 그대로 유효한 모든 JavaScript 일 수 있습니다. 그 이유는 페이지에 새 스크립트 태그를 추가하기 때문입니다. callback({...JSON...})이 표시되는 이유는 스크립트 태그의 URL에 전달 된 콜백 함수를 호출하기 때문입니다. 그러나 전체 웹 응용 프로그램의 함수 호출 및 다른 것들을 동일한 페이로드에 넣을 수 있습니다.

JSONP에 대한 대안으로 크로스 - 원본 리소스 공유를 조사해야합니다. 정규 AJAX가 몇 개의 HTTP 헤더를 추가하여 원점간에 직접 대화 할 수 있습니다. 그것은 JSONP의 훌륭한 대안으로, GET 요청의 한계 (모든 것이 아니라면 대부분의 IE 버전에서 2083 문자의 URL 제한)가 붙어 있습니다.

관련 문제