JSONP

Материал из Викиреальностя
Перейти к: навигация, поиск
Основная статья: JSON

JSONP (англ. JSON with padding, «JSON с подкладкой») является расширением JSON, в котором имя функции обратного вызова указывается как входной аргумент.

В основу технологии положен тот факт, что политика безопасности браузера позволяет использовать тег <script type="text/javascript" src="..."></script> для обращения к посторонним доменов.

Сначала идея была предложена в блоге MacPython в 2005 году, и сейчас используется многими Web 2.0-приложениями, такими, как Dojo Toolkit Applications, Google Toolkit Applications, Kendo UI и zanox Web Services. Дальнейшие расширения этого протокола были предложены с учетом введения дополнительных аргументов, как, например, в JSONPP при поддержке S3DB-вебсервисов.

Без использования технологии JSONP (т.е. используя просто JSON кодирования данных) сервер может вернуть только данные.

Например так:

{"paper": "A4", "count": 5}

Однако это лишь данные и они не могут влиять на браузер.

Используя JSONP, стороннему серверу передается в строке вызова (GET) имя callback-функции:

<script type="text/javascript" src="http://example.com/getjson?jsonp=parseResponse"></script>

Здесь параметр jsonp содержит имя callback функции parseResponse.

Теперь сторонний сервер example.com может вернуть такой код:

parseResponse ({"paper": "A4", "count": 5})

Теперь код вызывает javascript-функцию первого домена.

Поскольку JSONP использует скрипт-теги, информация, используемая при вызове носит открытый характер. По этой причине, JSONP неуместен для хранения конфиденциальных данных.

Включение скриптовых тегов от удаленных сайтов позволяет передать любой контент на сайте. Если удаленный сайт имеет уязвимости, которые позволяют выполнить Javascript-инъекции, то начальный сайт также может задет ими.

JSONP относится к теме «Программирование»   ±