2011-01-25 129 views
7

我有一个firefox扩展,它侦听“http-on-modify-request”并检查来自Firefox的所有GET请求。我希望能够取消请求(说退还给页面失败代码)或修改请求的URI,但似乎无法做到这一点。在nsiHttpChannel对象只是不允许它 - 例如取消Firefox扩展的HTTP GET请求

delete httpChannel; 

或正在重置一个空的request

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

不工作(你不能修改URI)。

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

回答

9

delete httpChannel;只是删除变量,有点像说httpChannel = undefined;。请求本身没有改变。同样,你的第二个想法只是设置变量指向一个新的nsIHttpChannel实例,但旧的请求仍然没有改变。

要修改请求,请使用它的属性和方法。请参阅nsIHttpChannelnsIChannelnsIRequest。正如你所说,你不能修改URI,所以你可能想取消它(见下文),并用新的替换它。我不确定如何做到这一点,但我想这三个页面中的一个有答案。

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