当XmlHttpRequest请求失败时如何获取回调响应

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:未经授权,但我在回调中没有收到此失败响应,因此authType将是未定义的。
我以前没有使用过javascript,所以问题是,即使请求失败了,如何在回调中获取响应?

1
XMLHttpRequest.getResponseHeader():第二步:“如果错误标志被设置,则返回null。” - Andreas
这确实是为什么没有设置响应的原因。目前我使用了一个解决方法,并将保持问题打开,直到我/其他人找到通用解决方案。 - Fofole
“通用解决方案”是更改规范,这不太可能 :) - Andreas
1个回答

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接