请求失败时,XmlHttpRequest获取回调响应

时间:2015-10-26 12:49:29

标签: javascript callback http-authentication onreadystatechange http-options-method

我向我的服务提出了一个简单的请求:

 var request = new XMLHttpRequest();
    request.open("OPTIONS", url, true);
    request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    request.setRequestHeader('Accept', 'application/json');

    request.onreadystatechange = function () {
        if (request.readyState != 4) {
            return;
        }

        var authType = request.getResponseHeader("WWW-Authenticate");

        makeRequest(...);
    };

    request.send();
}

所以我想要实现的是调用我的端点来查看授权类型(基本或承载)是什么,然后当我获得auth类型时,我会发出实际请求适当的凭证。

如果我手动发出请求,我会获得401未授权,这是正常的,但我也在我的标题中获得了WWW-Authenticate:Basic ...但是,如果我这样做javascript调用它将失败401:未经授权但我没有在我的回调中得到这个失败的响应所以authType将是未定义的。

我之前没有使用过javascript,所以问题是如果请求在未经授权的情况下失败,我怎样才能在回调中获得响应?

1 个答案:

答案 0 :(得分:0)

XMLHttpRequest有一个可以使用的onerror回调:

var request = new XMLHttpRequest();
...
request.onerror = function(){
    if (this.status == 401) {
    } 
} 
...
request.send();