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();
Другие вопросы по тегам