4

我对我的服务提出了一个简单的要求:

 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();
}

所以我想要实现的是调用我的端点以查看授权类型(基本或承载)是什么,然后当我获得身份验证类型时,我将使用正确的凭据发出实际请求。

如果我手动发出请求,我会得到未授权的 401,这是正常的,但我也会在我的标题中得到 WWW-Authenticate: Basic ...。但是,如果我执行此 javascript 调用,它将失败并显示 401:unauthorised 但我在回调中没有收到此失败响应,因此 authType 将是未定义的。

我以前没有使用过 javascript,所以问题是即使请求因未授权而失败,我如何才能在回调中获得响应?

4

1 回答 1

0

XMLHttpRequest 有一个 onerror 回调,您可以使用它:

var request = new XMLHttpRequest();
...
request.onerror = function(){
    if (this.status == 401) {
    } 
} 
...
request.send();
于 2015-10-26T12:56:25.727 回答