在firefox扩展上观察并保存http请求

Observe and save http-request on firefox extension

本文关键字:保存 http 请求 观察 firefox 扩展      更新时间:2023-09-26

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

  1. 来自window1的所有http请求都保存到1.txt(没关系)
  2. 窗口2中的所有http请求都保存到1.txt和2.txt
  3. 来自窗口3的所有http请求都保存到1.txt、2.txt和3.txt

我使用observer,但在测试中,我使用eventListener进行点击,任何它都能完美工作。从窗口x点击只为文件x保存。知道吗,可能出了什么问题?

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

您应该执行以下操作:

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