2013-05-16 2 views
4

Я новичок в разработке надстройки, и я уже некоторое время борюсь с этой проблемой. Здесь есть некоторые вопросы, которые каким-то образом связаны, но они пока не помогли мне найти решение.Дополнение к SDK для Firefox: получить заголовки ответов HTTP

Итак, я разрабатываю надстройку Firefox, которая читает один конкретный заголовок, когда любая веб-страница загружается на любую вкладку в браузере.

Я могу загружать вкладку наблюдателя, но я не думаю, что есть способ прочитать заголовки http внутри следующего (простого) кода, только URL. Пожалуйста, поправьте меня, если я ошибаюсь.

var tabs = require("sdk/tabs"); 
tabs.on('open', function(tab){ 
    tab.on('ready', function(tab){ 
    console.log(tab.url); 
    }); 
}); 
}); 

Я также возможность читать заголовки ответа HTTP, наблюдая события, как это:

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); 
    }, 

    observe: function(subject, topic, data) 
    { 
    if (topic == "http-on-examine-response") { 
     subject.QueryInterface(Ci.nsIHttpChannel); 
      this.onExamineResponse(subject); 
    } 
    }, 
    onExamineResponse: function (oHttp) 
    { 
     try 
     { 
     var header_value = oHttp.getResponseHeader("<the_header_that_i_need>"); // Works fine 
     console.log(header_value);   
     } 
     catch(err) 
     { 
     console.log(err); 
     } 
    } 
}; 

Проблема (и основной источник личного замешательства) в том, что, когда я читаю ответ я не знаю, к какому запросу ответ отвечает. Я хочу как-то отобразить запрос (особенно адрес запроса) и заголовок ответа («the_header_that_i_need»).

ответ

3

Вы здесь очень много, взгляните на sample code here для большего количества вещей, которые вы можете сделать.

onExamineResponse: function (oHttp) 
    { 
     try 
     { 
     var header_value = oHttp.getResponseHeader("<the_header_that_i_need>"); 
     // URI is the nsIURI of the response you're looking at 
     // and spec gives you the full URL string 
     var url = oHttp.URI.spec; 
     } 
     catch(err) 
     { 
     console.log(err); 
     } 
    } 

Кроме того, людям часто нужно найти вкладку, связанную, в котором это отвечает Finding the tab that fired an http-on-examine-response event

+1

Спасибо за указатели Bryan! Я также узнал, что в onExamineResponse я могу вызвать oHttp.name, которое возвращает URL-адрес запроса. Я удивлен, что заголовки недоступны в «готовом» событии вкладки. Страница загружена, поэтому я думаю, что заголовки там удобны. – mikko76

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