如何从我的跨浏览器插件中检索来自跨域HEAD请求的响应标头?

时间:2013-11-18 15:10:54

标签: javascript google-chrome-extension firefox-addon browser-extension kango-framework

我正在使用Kango框架开发跨浏览器插件,使用以下代码我正在使HEAD请求使用Kango.XHR成功执行(如HTTP DEBUGGER中所示)和代码在我的后台脚本中,下面还会返回data.status == 200

function doXHR(url) {
var details = {
    method: 'HEAD',
    url: url,
    async: true
};


kango.xhr.send(details, function(data) {
    if (data.status == 200) {
        kango.console.log(data.status);
    }
    else { // something went wrong
        kango.console.log('something went wrong');
    }
});
};

现在,我想从上面得到Content-Length响应标头的值,但不知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

通常,您可以使用xhr.getReponseHeader阅读回复标头。根据Kango的工作方式,您的data对象上可能已经提供了该方法。

如果data.getReponseHeader("Content-Length")不起作用,那么您可以尝试使用kango.getXMLHttpRequest模拟正常的Ajax调用,而不是使用kngo.xhr.send

var request = kango.xhr.getXMLHttpRequest();
request.open('HEAD', url);
request.send(null);
request.onload = function() {
    if(request.status == 200) {
        console.log(request.getResponseHeader("Content-Length"));
        console.log(request.responseText);
    }
}
request.onerror = function() {
    console.log("something went wrong");
}

同样,根据Kango的工作原理,您的服务器可能需要提供Access-Control-Expose-Headers响应标头以允许客户端读取它。这可能不太可能,因为扩展代码通常不受同一原始策略的约束,但我提供它只是为了帮助您解决Kango跨平台API中任何可能的不一致问题。