XmlHttpRequest получить ответный вызов при сбое запроса
У меня есть простой запрос к моему сервису:
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 имеет обратный вызов onerror, который вы можете использовать:
var request = new XMLHttpRequest();
...
request.onerror = function(){
if (this.status == 401) {
}
}
...
request.send();