在firefox扩展上观察并保存http-request

时间:2013-12-17 10:40:39

标签: javascript firefox-addon save httprequest observers

我正在创建简单的插件来捕获http请求并将有关它的信息保存到文件中。保存模块也可以工作和捕获模块。属于每个窗口的所有http请求都保存到单独的文件中。例如,从窗口1的任何选项卡保存到文件1.txt的所有http请求,从窗口2保存到文件2.txt等。 但是现在我有问题,因为来自窗口2,3的请求,...也保存到以前的文件。我的意思是:

  1. 来自窗口1的所有http请求保存到1.txt(没关系)
  2. 来自窗口2的所有http请求保存为1.txt和2.txt
  3. 来自窗口3的所有http请求都保存为1.txt,2.txt和3.txt
  4. 我正在使用观察者,但是对于测试我使用eventListener进行点击,任何它都很完美。从窗口x单击仅保存文件x。任何想法,什么可能是错的?

1 个答案:

答案 0 :(得分:1)

观察者是全球性的,而不是每个窗口。当您从覆盖脚本中注册它们时,您将为每个窗口获得一个观察者,并且无论请求来自哪个窗口,每个观察者都会收到所有 http连接的通知(请记住:观察者是全球性的)。哦,每个观察者也会收到每个没有任何关联窗口的请求的通知(例如安全浏览请求刷新,其他组件,其他附加组件从他们的代码模块做请求)。

您应该执行以下操作:

  • 重写您的代码,只为整个应用程序注册一个观察者。最简单的方法是在a code module中实现它。
  • 让观察者弄清楚DOMWindow(如果有的话)顶层窗口(如果有的话),并将其映射到特定文件。我已经给了一些代码in another answer将请求映射到一个DOM观察者的DOMWindow和顶级窗口。
  • 如何将请求映射到窗口和文件最终取决于您。您可以使用代码模块注册每个顶级窗口,然后您的代码模块将为每个窗口生成一个id /文件名,然后在observe中使用该信息将请求窗口映射到id和文件,。 ..