JavaScript. Подробное руководство, 6-е издание, стр. 288
<b> // Отобразить сведения во всплывающей подсказке,</b><b> link.title = "Тип: " + type + " \n" +</b><b> "Размер: " + size + " \n" + "Дата: " + date;</b><b> }</b><b> else {</b><b> // Если запрос не удался и подсказка для ссылки еще не содержит текст</b><b> // "Ссылка на другой сайт", вывести сообщение об ошибке,</b><b> if (!link.title)</b><b> link.title = "Невозможно получить сведения: \n" + req.status + " " + req.statusText;</b><b> }</b><b> };</b><b> req.send(null);</b><b> // Удалить обработчик: попытка получить сведения выполняется только один раз.</b><b> if (link.removeEventListener)</b><b> link.removeEventListener("mouseover", mouseoverHandler, false);</b><b> else</b><b> link.detachEvent("onmouseover", mouseoverHandler);</b><b> }</b><b>});</b>18.2. Выполнение НТТР-запросов с помощью <script>: JSONP
В начале этой главы упоминалось, что элемент
<b><script></b><b>src</b><b><script></b><b><script></b><b><script></b>Прием использования элемента
<b><script></b>Представьте, что вы пишете службу, которая обрабатывает GET-запросы и возвращает данные в формате JSON. Документы с общим происхождением могут пользоваться этой службой с помощью объекта
<b>XMLHttpRequest</b><b>JSON.parse()</b><b>XMLHttpRequest</b><b><script>.</b>Именно здесь на сцену выходит символ «Р» из аббревиатуры JSONP. Когда обращение к службе реализовано с помощью элемента
<b><script>,</b><b>[1, 2, {"buckle": "my shoe”}]</b>она должна отправлять дополненные данные, как показано ниже:
<b>handleResponse(</b><b> [1. 2. {"buckle": "my shoe"}]</b><b>)</b>Являясь телом элемента
<b><script>,</b><b>handleResponse(),</b>Используя элемент <script> в качестве Ajax-транспорта, вы разрешаете своей веб-странице выполнять любой программный код на языке JavaScript, который отправит удаленный сервер. Это означает, что прием, описываемый здесь, не должен использоваться при работе с серверами, не вызывающими доверия. Впрочем, даже при работе с доверенным сервером следует помнить, что этот сервер может быть взломан злоумышленником, и злоумышленник сможет заставить вашу веб-страницу выполнить любой программный код и отобразить любую информацию, какую он пожелает, и эта информация будет выглядеть, как если бы она поступила с вашего сайта.
При этом следует отметить, что для веб-сайтов стало обычным делом использовать доверенные сценарии сторонних разработчиков, особенно сценарии, используемые для внедрения в страницу рекламы или «виджетов». Использование элемента <script> в качестве Ajax-транспорта для взаимодействия с доверенными веб-службами ничуть не опаснее.
Чтобы этот прием действовал, необходимо иметь некоторый способ сообщить службе, что обращение к ней выполняется с помощью элемента
<b><script></b><b>?jsonp</b><b>&jsonp</b>