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

Javascript 请求失败时XmlHttpRequest获取回调响应,javascript,callback,http-authentication,onreadystatechange,http-options-method,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.o

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

 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:unauthorized失败,但是我在回调中没有得到这个失败的响应,因此authType将是未定义的


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

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

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

:步骤2:“如果设置了错误标志,则返回null。”这就是没有设置响应的原因。目前,我使用了一种变通方法,在我/某人找到一个通用解决方案之前,我将保持问题的开放性。一个“通用解决方案”将是更改规范,这不太可能:)