如何访问Firefox Add-on SDK中onHttpRequest函数中给出的数据?

时间:2013-10-29 13:41:55

标签: javascript firefox-addon firefox-addon-sdk

我正在尝试阅读响应标题'name'和'value'。最终目标是将它们与某些预设名称和值进行比较,以确定它们是否匹配。

这是我到目前为止所使用的函数,它是每次获得响应头时运行的函数。

var observer = require("observer-service");
observer.add("http-on-examine-response", onHttpRequest);

function onHttpRequest(subject, data)
{
  console.log("request subject...." + subject);
  console.log("request data...." + data);
}

输出如下:

请求主题.... [xpconnect wrapped nsISupports] 请求数据.... null

我希望知道如何从响应中获取其余数据。

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:1)

http-on-examime-responsesubject实现了nsIHttpChannel等等。您可以使用.QueryInterface()instanceof(内部有点使用QueryInteface,这样也可以使用此接口。

const {Ci} = require("chrome");
if (subject instanceof Ci.nsIHttpChannel) {
  console.log("content-type", subject.getResponseHeader("content-type"));
  subject.visitResponseHeaders(function(header, value) {
    console.log(header, value);
  });
}

这里还有其他几个问题,详细介绍了如何使用这些通知......此外,mxr可以帮助我们了解哪些接口,它们如何组合在一起以及如何可以使用它(特别是现有的测试很适合看到各种用途的一些用途)。

还有"nsITraceableChannel, Intercept HTTP Traffic"文章会详细介绍,例如关于如何使用nsITraceableChannel从这样的频道获取有效载荷数据。