我以编程方式在我的网页中设置iframe的网址。 我必须知道从这个URL更改触发了哪些http请求(用于css,脚本,图像等的URL加载)。 我拦截了XMLHttpRequest,但这个对象从未被调用过......
如何拦截这些http请求?
是否有其他方法可以“加载”iframe并获取所有已触发的网址请求?
这是我的代码:
(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');
答案 0 :(得分:1)
<iframe />
与父窗口的window
不同,因此,当您覆盖XMLHttpRequest
时,您将覆盖父窗口中的那个 < em> not <iframe />
窗口中的那个。
不幸的是,相同的原始政策会阻止您访问window
的{{1}},因此您无法做到这一点。
即使SOP没有在这里发挥作用,当你可以拦截AJAX请求时,你也无法拦截资产请求(CSS,JS,图像)。
您最好的选择是在您的服务器上使用代理,并通过那里路由iframe请求;通过代理重写所有资产URL而不是直接访问(但即使这样,您也有可能无法跟踪的边缘情况,例如JavaScript包括其他资产等等。