JSONP (, «JSON з підкладкою») є розширенням JSON, коли ім'я функції зворотного виклику вказується як вхідний аргумент.
В основу технології покладено той факт, що політика безпеки браузера дозволяє використовувати тег для звернення до сторонніх доменів.
Спочатку ідея була запропонована в блозі 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 ін'єкції, то початковий сайт також може зачеплений ними.
Дивись також Cross-Origin Resource Sharing
Виноски