JSONP

JSONP – это JSON + Padding (с полями) – способ обойти запрет на кроссбраузерные запросы.

Технология следующая. Скрипт на странице добавляет в страницы тег <script src=’…’>, после чего начинается немедленное скачивание скрипта. Если этот скачанный скрипт будет содержать какие-то данные, доступа из вызвавшей его функции у нас не будет. Однако скрипт может содержать вызов заранее обговоренной функции, которая выполнится в глобальном пространстве имён:

someFunction({being: 'nothing', nothing: 'being')}

Таким образом, функция вызывается с JSON-параметрами. Клиент получил параметры из кросс-браузерного источника.

По соглашению, источник прописывается с параметром и именем функции-коллбэка:

<script type="text/javascript"
      src="http://server2.example.com/Users/1234?jsonp=someFunction">
</script>

Можно сделать один объект с коллбэками, из которого сервер будет отдавать нужную функцию:

<script type="text/javascript"
      src="http://server2.example.com/Users/1234?callback=Callbacks.someFunction345">
</script>

MIME-type для JSONP стандартный application/javascript.

Теги: