как получить ответ на запрос JSONP в качестве источника, прежде чем он будет добавлен на сайт в качестве элемента сценария - PullRequest
0 голосов
/ 19 февраля 2012

Поскольку запросы JSONP создаются следующим образом:

var script=document.createElement('script');
script.src='url';
script.onLoad=function(){dosomething()};
document.body.appendChild(script);

Мой вопрос заключается в том, существует ли стандартное для w3c событие, поддерживаемое несколькими браузерами, например onBeforeLoad, которое, в свою очередь, позволяет нам прекратить выполнение загруженного скрипта,в случае, если он не является правильно сформированным ответом JSONP, или он не проходит проверку заранее определенной схемы, или на случай, если он состоит из некоторого вредоносного кода (базовая проверка скрипта)?Я знаю о событии onBeforeLoad, поддерживаемом в некоторых браузерах, но при сосредоточении на загруженном источнике данных сценария и по любой из указанных выше причин было бы чрезвычайно полезно иметь кросс-браузерный доступ к источнику загружаемого сценария, и из-за хорошегопричины, возможность остановить выполнение, непосредственно перед его запуском.

Например, приведенный выше сценарий может быть следующим:

var script=document.createElement('script');
script.src='url';
script.onBeforeLoad=function(){
       if(json.parseJson(this.dataSource) && 
          json.validateAgainst(schema,this.dataSource))
       {
          return false;
       }
       else{
          return true;
       }
};
//if onBeforeLoad return true, onLoad will not be fired;
script.onLoad=function(){dosomething()};
document.body.appendChild(script);

Я знаю, что JSONP - это доверие кМодуль стороннего javascript, поэтому я иногда хочу, чтобы, если бы я мог проверить эти модули непосредственно перед тем, как я его использую.

1 Ответ

0 голосов
/ 19 февраля 2012

Если вы хотите определить, превышает ли ответ JSONP ожидаемый JSONP, то нет, это невозможно.

Если вы сможете прочитать ответ, вам не понадобится JSONP. Поскольку основная причина использования JSONP заключается в том, чтобы обойти ограничения на доступ к ответу на запросы XHR или через DOM из-за политики Same-Origin . И расширение XHR (ранее известное как XHR Level 2), которое разрешает запросы между источниками посредством поддержки спецификации CORS, может быть неприменимо из-за отсутствия поддержки браузерами и / или серверами.

Это главная проблема безопасности с JSONP: вам нужно доверять серверу.

...