我有一个观察者在http- on -examine response上定义为
httpRequestObserver = {
observe: function(request, aTopic, aData){
if (aTopic == "http-on-examine-response") {
request.QueryInterface(Ci.nsIHttpChannel);
var newListener = new TracingListener();
request.QueryInterface(Ci.nsITraceableChannel);
newListener.originalListener = request.setNewListener(newListener);
}
},
QueryInterface: function(aIID){
if (typeof Cc == "undefined") {
var Cc = components.classes;
}
if (typeof Ci == "undefined") {
var Ci = components.interfaces;
}
if (aIID.equals(Ci.nsIObserver) ||
aIID.equals(Ci.nsISupports)) {
return this;
}
throw components.results.NS_NOINTERFACE;
},
};我只想在响应代码为200的情况下添加侦听器。基本上,我要完成的是避免3xx reponses.But,我无法从headers.How读取ResponseCode来获取这里的响应代码。
提前感谢你的帮助...
发布于 2013-04-21 09:04:43
这里是document,你可以使用httpChannel.responseStatus。
因此,将您的observe函数更改为
observe: function(request, aTopic, aData){
if (aTopic !== 'http-on-examine-response') {
return;
}
let httpChannel = request.QueryInterface(Ci.nsIHttpChannel);
if (httpChannel.responseStatus !== 200) {
return;
}
// do your stuff...
let traceableChannel = event.subject.QueryInterface(Ci.nsITraceableChannel);
let newListener = new TracingListener();
newListener.originalListener = traceableChannel.setNewListener(newListener);
}
}, https://stackoverflow.com/questions/16112252
复制相似问题