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

How to retrieve response-headers from a cross-domain HEAD request from my cross-browser addon?

本文关键字:检索 请求 响应 HEAD 我的 浏览器 插件      更新时间:2023-09-26

我正在使用Kango框架开发一个跨浏览器插件,使用以下代码,我正在使用正在成功执行的Kango.XHR发出HEAD请求(如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响应标头的值,但不知道如何做到这一点?

通常,您可以使用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中任何可能的不一致。