Я разрабатываю приложение Angular2. Кажется, что, когда мой токен доступа истекает, код статуса 401 HTTP изменяется в значение 0 в объекте Response. Я получаю 401 Unauthorized, но объект ответа ERROR имеет статус 0. Это мешает мне захватить ошибку 401 и попытаться обновить токен. Что вызывает изменение кода статуса HTTP 401 в код состояния HTTP 0?Angular2 Запрос REST Код статуса HTTP 401 изменяется на 0
Вот скриншот из консоли Фирефокса:
Вот мой код:
get(url: string, options?: RequestOptionsArgs): Observable<any>
{
//console.log('GET REQUEST...', url);
return super.get(url, options)
.catch((err: Response): any =>
{
console.log('************* ERROR Response', err);
if (err.status === 400 || err.status === 422)
{
return Observable.throw(err);
}
//NOT AUTHENTICATED
else if (err.status === 401)
{
this.authConfig.DeleteToken();
return Observable.throw(err);
}
else
{
// this.errorService.notifyError(err);
// return Observable.empty();
return Observable.throw(err);
}
})
// .retryWhen(error => error.delay(500))
// .timeout(2000, new Error('delay exceeded'))
.finally(() =>
{
//console.log('After the request...');
});
}
Этот код находится в таможенной службы HTTP, который простирается HTTP Angular2 так что я могу перехватить ошибки в одном место нахождения.
В Google Chrome, я получаю сообщение об ошибке:
XMLHttpRequest не может загрузить https://api.cloudcms.com/repositories/XXXXXXXXXXXXXXXX/branches/XXXXXXXXXXXXXXXX/nodesXXXXXXXXXXXXXXXX. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение 'http://screwtopmedia.local.solutiaconsulting.com', следовательно, не допускается. Ответ получил код статуса HTTP 401.
Это сбивает с толку, потому что я включаю заголовок «Access-Control-Allow-Origin» в запросе.
Вот картина результатов, полученная в Google Chrome:
Я попытался доступ заголовка «WWW-Authenticate» Response как средство ловушки для 401. Однако, следующий код возвращает NULL:
err.headers.get("WWW-Authenticate")
Это озадачивает, что я получаю вопрос CORS, потому что я не получаю никаких ошибок CORS при условии маркер доступа действителен.
Как заблокировать код статуса HTTP 401? Почему 401 код статуса HTTP изменяется на 0?
Благодарим за помощь.
Если cloudcms.com не устанавливает контроль доступа-Разрешить-Происхождение в ответе 401, то вы ничего не можете сделать. Вам необходимо открыть билет поддержки с ними, чтобы убедиться, что это нормальное поведение. javascript в браузерах (FF, Chrome & Safari). Я тестировал, не получал никакой информации, если произошла ошибка CORS, отличная от состояния 0. Угловое2 не имеет никакого контроля над этим. –
Вы решили проблему? Я имею в виду, что сервер не отправляет код с исправлениями, но на консоли хром вы видите 401, но угловой продолжает давать 0, как статус? – stackdave