首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:如何拦截来自iframe的http请求?

JavaScript:如何拦截来自iframe的http请求?
EN

Stack Overflow用户
提问于 2013-03-03 10:51:58
回答 1查看 12.9K关注 0票数 4

我以编程方式在网页中设置iframe的url。我必须知道哪些http请求是由这个url更改触发的( css、脚本、图像等加载的url)。我拦截了XMLHttpRequest,但是这个物体从来没有被叫做.

我怎样才能拦截那些http请求?

是否有另一种方法来“加载”一个iframe并获得所有触发的url请求?

这是我的代码:

代码语言:javascript
复制
(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');
EN

回答 1

Stack Overflow用户

发布于 2013-03-03 11:03:42

<iframe />与父窗口有不同的window,因此,当您重写XMLHttpRequest时,您将重写父窗口中的XMLHttpRequest,而不是<iframe />窗口中的而不是

不幸的是,相同的起源策略阻止您访问<iframe /><iframe />,因此您无法对此做任何事情。

即使SOP不在这里发挥作用,尽管您可以拦截AJAX请求,但是您也无法拦截资产请求(CSS、JS、映像)。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15184891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档