Я разрабатываю аддон для Firefox и слушаю http ответы вроде этого:
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(httpObserver, "http-on-examine-response", false);
Который вызывает мой объект httpObserver, который выглядит следующим образом:
var httpObserver =
{
observe : function(aSubject, aTopic, aData)
{
aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
httpstatus = aSubject.responseStatus;
if(httpstatus == 200 && aSubject.contentType.toString().indexOf("text/") != -1)
{
alert("URL: " + aSubject.name + "\r\nStatus: " + httpstatus + "\r\nContentType: " + aSubject.contentType); //Works great
alert("Body: " + aSubject.responseText); //Is undefined, why?
}
else if(httpstatus == 404 && aSubject.contentType.toString().indexOf("text/html") != -1)
alert("Page not found!\r\nURL: " + aSubject.name + "\r\nContentType: " + aSubject.contentType);
}
};
У меня есть следующие проблемы:
Я бы хотел получить целое тело и заголовок из ответа, но я не знаю как.
Однажды я прочитал, что это может быть проблемой, что сервер находится не в том же домене, но как тогда Firefox справляется с этим?
Я уже провел много исследований, но ничего полезного не нашел, может, что-то упустил ..
Кстати: у меня есть доступ и к объекту запроса, если это поможет.