开发者

Get Response Header/Body

开发者 https://www.devze.com 2023-04-11 18:44 出处:网络
I\'m developing a firefox addon and I\'m listening to http responses like this: var observerService = Components.classes[\"@mozilla.org/observer-service;1\"].getService(Components.interfaces.nsIObser

I'm developing a firefox addon and I'm listening to http responses like this:

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(httpObserver, "http-on-examine-response", false);

Which calls my httpObserver object that looks like this:

var htt开发者_如何学编程pObserver =
{
 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);
 }
};

I've got the following problem(s):

I'd like to get the whole body and header from the response but I don't know how. I once read that it could be a problem that the server is not in the same domain, but how does the firefox handles it then?

I already did a lot of research but I didn't find anything usefull, maybe I missed something..

Btw.: I've got access to the request object as well if that helps.


You would use nsITraceableChannel interface for that, it is implemented by all HTTP requests. This allows you to replace the channel listener by one of your own, so you can read out the data in onDataAvailable call before passing it on to the original listener. There is some example code doing just that here: http://www.softwareishard.com/blog/firebug/nsitraceablechannel-intercept-http-traffic/

0

精彩评论

暂无评论...
验证码 换一张
取 消