2

我以编程方式在我的网页中设置 iframe 的 url。我必须知道这个 url 更改触发了哪些 http 请求(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');
4

1 回答 1

2

An与父窗口<iframe />不同window,因此,当您覆盖时XMLHttpRequest,您将覆盖父窗口中的那个,而不是窗口中的那个<iframe />

不幸的是,同源策略阻止您访问 的window<iframe />因此您对此无能为力。

即使这里没有 SOP,虽然您可以拦截 AJAX 请求,但您无法拦截资产请求(CSS、JS、图像)。

您最好的选择是在您的服务器上使用代理,并通过那里路由 iframe 请求;通过您的代理而不是直接访问重写所有资产 URL(但即便如此,您也无法跟踪边缘情况,例如 JavaScript,包括其他资产等。

于 2013-03-03T11:03:42.417 回答