首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >http- on -examine response上的Firefox扩展列表仅适用于200状态代码的响应

http- on -examine response上的Firefox扩展列表仅适用于200状态代码的响应
EN

Stack Overflow用户
提问于 2013-04-20 03:35:10
回答 1查看 791关注 0票数 0

我有一个观察者在http- on -examine response上定义为

代码语言:javascript
复制
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来获取这里的响应代码。

提前感谢你的帮助...

EN

回答 1

Stack Overflow用户

发布于 2013-04-21 09:04:43

这里是document,你可以使用httpChannel.responseStatus

因此,将您的observe函数更改为

代码语言:javascript
复制
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);

    }
}, 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16112252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档