JSONP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

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

Спочатку ідея була запропонована в блозі MacPython в 2005 році [1], і зараз використовується багатьма Web 2.0 застосунками, такими, як Dojo Toolkit Applications, Google Toolkit Applications, Kendo UI [2] і zanox Web Services. Подальші розширення цього протоколу були запропоновані з урахуванням введення додаткових аргументів, як, наприклад, у JSONPP [3] за підтримки 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 може бути недоречними для зберігання конфіденційних даних[4].

Включення скриптових тегів від віддалених сайтів дозволяє їм передати будь-який контент на сайті. Якщо віддалений сайт має вразливості, які дозволяють виконати Javascript ін'єкції, то початковий сайт також може зачеплений ними.

Дивись також[ред.ред. код]

Виноски[ред.ред. код]

  1. «from __future__ import * » Remote JSON — JSONP». Bob.pythonmac.org. Архів оригіналу за 2012-02-12. Процитовано 2008-09-08. 
  2. GWT Tutorial: How to Read Web Services Client-Side with JSONP
  3. Almeida Jonas JSON, JSONP, JSONPP? S3DB (June 11, 2008). Процитовано 2009-04-26.
  4. RIAspot. «JSON P for Cross Site XHR».