2011-01-25 11 views
7

Tengo una extensión para Firefox que escucha "http-on-modify-request" e inspecciona todas las solicitudes GET provenientes de Firefox. Me gustaría poder cancelar la solicitud (digamos devolver un código de falla a la página) o modificar el URI de la solicitud, pero parece que no puedo hacerlo. el objeto nsiHttpChannel simplemente no lo permite - por ejemploCancelar una solicitud HTTP GET de la extensión de Firefox

delete httpChannel; 

o reseteo a una solicitud de vacío

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

no funcionan (y no se puede modificar el URI).

Entonces, ¿cómo tanto intercepción y modificar peticiones HTTP GET en una extensión de Firefox.

Respuesta

9

delete httpChannel; simplemente elimina la variable, algo así como decir httpChannel = undefined;. La solicitud en sí misma no ha cambiado. Del mismo modo, su segunda idea simplemente establece la variable para apuntar a una nueva instancia de nsIHttpChannel, pero la solicitud anterior aún no se ha modificado.

Para modificar la solicitud, use sus propiedades y métodos. Consulte nsIHttpChannel o nsIChannel o nsIRequest. Como dices, no puedes modificar el URI, por lo que es posible que quieras cancelarlo (ver a continuación) y reemplazarlo por uno nuevo. No estoy seguro de cómo hacerlo exactamente, pero me imagino que una de esas tres páginas tiene la respuesta.

Para cancelarlo, utilice nsIRequest.cancel()

Cuestiones relacionadas