在将JSONP请求响应作为脚本元素附加到站点之前,如何将其检索为源



由于JSONP请求是以以下方式创建的:

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

我的问题是,是否有像onBeforeLoad这样的w3c标准、跨浏览器支持的事件,它反过来让我们停止执行下载的脚本,以防它不是一个格式良好的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模块的信任,因此我有时希望我能在使用它之前验证这些模块。

如果您想检测JSONP响应是否大于您期望的JSONP,那么不,这是不可能的。

如果您能够读取响应,那么首先就不需要JSONP。因为使用JSONP的主要原因是为了规避同源策略对访问XHR请求响应或通过DOM的限制。XHR的扩展(以前称为XHR Level 2)通过支持CORS规范来允许跨源请求,由于浏览器和/或服务器缺少支持,该扩展可能不适用。

这是JSONP的主要安全问题:您需要信任服务器。

相关内容

  • 没有找到相关文章

最新更新