从Firefox扩展中取消HTTP GET请求

时间:2011-01-25 20:13:29

标签: http firefox firefox-addon

我有一个firefox扩展,它会监听“http-on-modify-request”并检查来自firefox的所有GET请求。我希望能够取消请求(比如向页面返回失败代码)或修改请求的URI但似乎无法做到。 nsiHttpChannel对象不允许它 - 例如

delete httpChannel;

或重置为空请求

httpChannel = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);

不起作用(并且您无法修改URI)。

那么你如何在firefox扩展中拦截修改 http GET请求。

1 个答案:

答案 0 :(得分:9)

delete httpChannel;只是删除变量,有点像说httpChannel = undefined;。请求本身没有变化。类似地,您的第二个想法只是将变量设置为指向新的nsIHttpChannel实例,但旧请求仍未更改。

要修改请求,请使用其属性和方法。请参阅nsIHttpChannelnsIChannelnsIRequest。正如您所说,您无法修改URI,因此您可能希望取消它(请参阅下文)并将其替换为新URI。我不确定如何做到这一点,但我想这三页中有一页有答案。

要取消它,请使用nsIRequest.cancel()