如何处理Firefox扩展中的每个请求?

如何处理Firefox扩展中的每个请求?,firefox,firefox-addon,Firefox,Firefox Addon,我试图捕获并处理一个网页或其中的插件将要发出的每个请求。 例如,如果打开控制台并启用网络日志记录,当HTTP请求即将发送时,控制台会在那里显示它。 我想捕获每个链接并调用我的函数,即使flash player加载了视频(如果是http,也会登录到控制台)。 谁能指导我该做什么,或者从哪里开始 编辑:我希望能够取消请求,并在需要时以我的方式处理。我相信,您可以使用Jetpack SDK获取大部分所需内容。如果注册并侦听,则可以使用nsIHttpChannel方法来响应和请求 let { Ci }

我试图捕获并处理一个网页或其中的插件将要发出的每个请求。 例如,如果打开控制台并启用网络日志记录,当HTTP请求即将发送时,控制台会在那里显示它。 我想捕获每个链接并调用我的函数,即使flash player加载了视频(如果是http,也会登录到控制台)。 谁能指导我该做什么,或者从哪里开始


编辑:我希望能够取消请求,并在需要时以我的方式处理。

我相信,您可以使用Jetpack SDK获取大部分所需内容。如果注册并侦听,则可以使用nsIHttpChannel方法来响应和请求

let { Ci } = require('chrome');
let { on } = require('sdk/system/events');
let { newURI } = require('sdk/url/utils');

on('http-on-modify-request', function ({subject, type, data}) {
  if (/google/.test(subject.URI.spec)) {
    subject.QueryInterface(Ci.nsIHttpChannel);
    subject.redirectTo(newURI('http://mozilla.org'));
  }
});

其他信息,“

非sdk版本,具有更多的控制和细节: 这也允许您查看标志,因此您只能查看LOAD_DOCUMENT_URI,它是框架和主窗口。主窗口始终为加载\初始\文档\ URI

-在这个示例中,您可以在浏览器解析源代码之前查看源代码

在这些示例中,您还可以看到如何从主题中获取contentWindow和browserWindow,您可以将其应用于sdk示例,只需使用“主题”

此外,我更喜欢在检查响应上使用http,即使在sdk版本中也是如此。因为否则,您将看到它重定向到的所有页面,而不是最终重定向到的页面。假设一个url blah.com将您重定向到blah.com/1,然后再重定向到blah.com/2


只有blah.com/2有一个文档,所以在modify上你会看到blah.com和blah.com/1,它们会有标志LOAD_REPLACE,通常它们会立即重定向,所以文档永远不会显示,如果是定时重定向,你会看到文档,也会看到LOAD_INITIAL_document_URI标志,我猜我自己还没有体验过如何正确工作,第三个参数应传递给on(true)以保持强引用。否则,只保留对函数的弱引用,当函数被垃圾收集时,事件不再被激发