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。”这就是没有设置响应的原因。目前,我使用了一种变通方法,在我/某人找到一个通用解决方案之前,我将保持问题的开放性。一个“通用解决方案”将是更改规范,这不太可能:)