2011-01-25 128 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()