2015-04-02 2 views
1

Это в основном относится к Firefox add-on SDK: Get http response headers. Я пытаюсь регистрировать ответы на http-запросы, но до сих пор мне не удалась отладить это. Было бы очень полезно, если бы я советовался ... часами стучал головой об этом и никуда не уходил.Мониторинг SDK в Firefox SDK

Это является 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 Add-на SDK, испытываемые браузер загружается отлично, и если я открываю Инструменты> Дополнения> Расширения , Я вижу, что мой список там. Но когда я указываю браузеру теста на google.com (или любой URL-адрес), ничего не регистрируется на консоли.

Я сравнил свой main.js с предложенными методами @https://developer.mozilla.org/en-US/docs/Setting_HTTP_request_headers, и все кажется конгруэнтным. В конце я планирую сделать что-то более сложное, чем просто записывать вещи, но я не могу даже заставить эту базовую функциональность работать правильно!

ответ

2

Кажется, что вы установили наблюдателя для запросов, а не ответов (http-on-study-request).

Используйте это в функции инициализации:

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

Спасибо за ваш ответ, вы правы насчет моей путаницы ж/ответа .. но почему мой код, по крайней мере, не регистрировал запросы? – user2426679

+0

Для запросов вы должны установить наблюдателя для «http-on-modify-request» - обратите внимание на слово «изменить», – lexasss

Смежные вопросы