2011-01-25 3 views
7

У меня есть расширение firefox, которое прослушивает «http-on-modify-request» и проверяет все запросы GET, исходящие от firefox. Я хотел бы иметь возможность отменить запрос (например, вернуть код сбоя на страницу) или изменить URI запроса, но не может это сделать. объект nsiHttpChannel просто не позволяет - напримерОтменить HTTP GET-запрос от Firefox Extension

delete httpChannel; 

или переустановку к пустому запросу

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

не работают (и вы не можете изменить URI).

Так как же вы оба перехватывать и изменить HTTP GET запросы в расширении FireFox.

ответ

9

delete httpChannel; просто удаляет переменную, вроде как httpChannel = undefined;. Сам запрос не изменяется. Аналогично, ваша вторая идея просто устанавливает переменную для указания на новый экземпляр nsIHttpChannel, но старый запрос по-прежнему остается неизменным.

Чтобы изменить запрос, используйте его свойства и методы. См. nsIHttpChannel или nsIChannel или nsIRequest. Как вы говорите, вы не можете изменить URI, чтобы отменить его (см. Ниже) и заменить его на новый. Я точно не знаю, как это сделать, но я думаю, что на одной из этих трех страниц есть ответ.

Чтобы отменить его, используйте nsIRequest.cancel()