В данном посте мы создадим и разберем код, позволяющий получать заголовки (headers) загружаемой страницы.
В общем, реализовать эту задачу нам поможет следующий код:
// Создаем наблюдателя, который будет отлавливать изминения всех запросов
var httpRequestObserver = {
observe: function(subject, topic, data) {
if (topic == "http-on-examine-response") {
// словили новый внешний запрос
// почти все заголовки можно найти в объекте "subject"
// но мы постараемся получить headers в том виде, в котором они пришли к нам:
var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
// Попытаемся определить версию протокола
var getHttpProtocolVersion = function (httpChannel) {
var version = "1.?";
// if Mozilla v1.5a and more
try {
var maj = new Object();
var min = new Object();
httpChannel.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
httpChannel.getResponseVersion(maj,min);
version = "" + maj.value + "."+ min.value;
} catch (ex) {}
return version;
};
// Формируем заголовки
var headers = "HTTP/"+getHttpProtocolVersion(httpChannel)+" "+
httpChannel.responseStatus+" "+
httpChannel.responseStatusText+"\n";
httpChannel.visitResponseHeaders({
visitHeader: function(name, value) {
headers += name+": "+value+"\n";
}
});
// Есть! Теперь мы можем вывести заголовки страницы в сообщении:
alert(headers);
}
}
};
// Инициализируем нашего наблюдателя
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.addObserver(httpRequestObserver, "http-on-examine-response", false);
Таким вот образом можно получать информацию о всех загружаемых ресурсах в FireFox.