2016-05-16 2 views
0

Momentan schreibe ich ein Plugin für Mozilla Firefox, das die Fähigkeit benötigt, alle HTTP-Anfragen zu hören, die von einem Tab gemacht werden. Also habe ich die Beschreibung von mdns article über dieses Thema gelesen, aber ich bin nicht in der Lage, es zum Laufen zu bringen.höre auf HTTP-Anfragen eines Firefox-Tabs mit einem Plugin

Ich habe versucht "The Easy Way", aber ich habe keine Ahnung, wo diesen Code zu platzieren. Wenn ich es in die index.js des Plugins lege, sagt es einfach "gBrowser ist nicht definiert". Es wäre wirklich nett, wenn mir jemand sagen könnte, wie das funktioniert.

Ich lese auch diese article, die meinem Problem der Verwendung von XMLHttpRequest ähnlich schien, die ich zur Arbeit bekommen konnte. Also habe ich versucht, aus diesem Problem die Lösung zu machen, aber es funktioniert auch nicht.

Vielen Dank für jede Hilfe :)

EDIT: Ich konnte den Code aus dem zweiten Artikel in die Lösung bilden, die für XMLHttpRequest wie folgt gearbeitet:

let { Cc,Ci } = require("chrome"); 
var activityDistributor = Cc["@mozilla.org/network/http-activity-distributor;1"].getService(Ci.nsIHttpActivityDistributor); 

var httpObserver = { 
    observeActivity: function(aHttpChannel, aActivityType, aActivitySubtype, aTimestamp, aExtraSizeData, aExtraStringData){ 
     if (aActivityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION) { 
      switch(aActivitySubtype) { 
       case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER: 
        // received response header 
        break; 
       case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: 
        console.log('recieved !!!') 
        break; 
      } 
     } 
    } 
}; 

activityDistributor.addObserver(httpObserver); 

Aber es tut nicht die Log-Ausgabe (oder zumindest ich kann es nicht in der Browser-Konsole finden).

Antwort

0

Ich fand die Lösung, und es war nur meine Schuld. Ich habe die Variable falsch benannt, daher wurde "nsIHttpActivityObserver" nicht gesetzt! Also das wäre der richtige Code:

let { Cc,Ci } = require("chrome"); 
var nsIHttpActivityObserver = Cc["@mozilla.org/network/http-activity-distributor;1"].getService(Ci.nsIHttpActivityDistributor); 


var httpObserver = { 
    observeActivity: function(aHttpChannel, aActivityType, aActivitySubtype, aTimestamp, aExtraSizeData, aExtraStringData){ 
     if (aActivityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION) { 
      switch(aActivitySubtype) { 
       case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER: 
        console.log('header received') 
        break; 
       case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: 
        console.log('complete anwser received') 
        break; 
      } 
     } 
    } 
}; 

nsIHttpActivityObserver.addObserver(httpObserver); 
Verwandte Themen