我以编程方式在网页中设置iframe的url。我必须知道哪些http请求是由这个url更改触发的( css、脚本、图像等加载的url)。我拦截了XMLHttpRequest,但是这个物体从来没有被叫做.
我怎样才能拦截那些http请求?
是否有另一种方法来“加载”一个iframe并获得所有触发的url请求?
这是我的代码:
(function(xhr){
var pt = xhr.prototype;
pt._open = pt.open;
pt.open = function(){
console.log('Open called...');
this._open.apply(this, arguments);
})(XMLHttpRequest);
...
$('#iframe').attr('src', 'http://www.stackoverflow.com');
发布于 2013-03-03 11:03:42
<iframe />
与父窗口有不同的window
,因此,当您重写XMLHttpRequest
时,您将重写父窗口中的XMLHttpRequest
,而不是<iframe />
窗口中的而不是。
不幸的是,相同的起源策略阻止您访问<iframe />
的<iframe />
,因此您无法对此做任何事情。
即使SOP不在这里发挥作用,尽管您可以拦截AJAX请求,但是您也无法拦截资产请求(CSS、JS、映像)。
您最好的选择是在服务器上使用代理,并通过该代理路由iframe请求;通过代理重写所有资产URL,而不是直接访问(但即使这样,您仍有无法跟踪的边缘情况,如JavaScript (包括其他资产等))。
https://stackoverflow.com/questions/15184891
复制相似问题