由于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模块的信任,因此我有时希望如果我能在我使用它之前验证这些模块。
答案 0 :(得分:0)
如果你想检测JSONP响应是否超过你期望的JSONP,那么不,这是不可能的。
如果您能够阅读回复,那么您首先不需要JSONP。因为使用JSONP的主要原因是为了避免因访问Same-Origin Policy而访问XHR请求响应或通过DOM的限制。由于缺少浏览器和/或服务器的支持,XHR(以前称为XHR Level 2)的扩展允许支持CORS规范的跨源请求可能不适用。
这是JSONP的主要安全问题:您需要信任服务器。