2015-04-02 53 views
1

這主要參考Firefox add-on SDK: Get http response headers。我正在嘗試記錄對http請求的響應,但到目前爲止,我沒有運氣調試這個。真的會感激一些建議......一直在我的頭上打了幾個小時,沒有任何意見。Firefox SDK監控http響應

這是我的小擴展main.js:

var {Cc, Ci} = require("chrome"); 
var httpRequestObserver = 
{ 
    init: function() { 
     var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); 
     observerService.addObserver(this, 'http-on-examine-response', false); 
     observerService.addObserver(this, 'http-on-examine-cached-response', false); 
     observerService.addObserver(this, 'http-on-examine-merged-response', false); 
    }, 

    observe: function(subject, topic, data) { 
     if (topic === 'http-on-examine-response' || topic === 'http-on-examine-cached-response' || topic === 'http-on-examine-merged-response') { 
      subject.QueryInterface(Ci.nsIHttpChannel); 
      this.onExamineResponse(subject); 
     } 
    }, 

    onExamineResponse: function(oHttp) { 
     try 
     { 
      console.log(oHttp.URI.spec);  
     } 
     catch(err) 
     { 
      console.log(err); 
     } 
    } 
}; 

當我執行的Firefox插件SDK,測試瀏覽器啓動了罰款,如果我打開工具>附加組件>擴展,我看到我的列表在那裏。但是當我將測試瀏覽器指向google.com(或任何url)時,沒有任何東西會記錄到控制檯。

我將我的main.js與建議的技巧進行了比較@https://developer.mozilla.org/en-US/docs/Setting_HTTP_request_headers並且一切看起來都是一致的。最後,我打算做一些比記錄事情更復雜的事情,但我甚至無法使這些基本功能正常工作!

回答

2

您似乎設置了請求的觀察者,而不是響應(http-on-examine-request)。

使用此在init函數:

observerService.addObserver(this, 'http-on-examine-response', false); 
observerService.addObserver(this, 'http-on-examine-cached-response', false); 
observerService.addObserver(this, 'http-on-examine-merged-response', false); 

同樣,在觀察功能使用:

if (topic === 'http-on-examine-response' || topic === 'http-on-examine-cached-response' || topic === 'http-on-examine-merged-response') { ... } 
+0

感謝您的回覆,你說得對,我的mixup瓦特/響應..但爲什麼我的代碼至少沒有記錄請求? – user2426679 2015-04-03 16:22:26

+0

對於請求您必須設置「http-on-modify-request」的觀察者 - 注意單詞「修改」 – lexasss 2015-04-03 16:30:42