【发布时间】:2015-10-26 21:01:37
【问题描述】:
我对我的服务提出了一个简单的请求:
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,所以问题是即使请求因未经授权而失败,我如何才能在回调中获得响应?
【问题讨论】:
-
XMLHttpRequest.getResponseHeader():第 2 步:“如果设置了错误标志,则返回 null。” -
这确实是为什么没有设置响应。目前,我使用了一种解决方法,并将保持问题开放,直到我/有人找到通用解决方案。
-
“通用解决方案”是更改规范,这不太可能:)
标签: javascript callback http-authentication onreadystatechange http-options-method