Я собрал свой собственный маленький обработчик ошибок для работы с HttpErrorResponses на REST-сервере, но я замечаю, что на клиенте что-то идет не так, и Angular оборачивает их как часть HttpErrorResponse, который передается моей ошибкеобработчик.
Итак, сначала в консоли я вижу следующее:
Доступ к XMLHttpRequest в «http://localhost:8080/group' из источника» http://localhost:4200' заблокирован CORSpolicy: значение заголовка «Access-Control-Allow-Origin» в ответе не должно быть подстановочным знаком «*», если режим учетных данных запроса «include».Режим учетных данных запросов, инициированных XMLHttpRequest, контролируется атрибутом withCredentials.
, который следует ожидать в данных обстоятельствах, но я бы хотел, чтобы мой обработчик ошибок регистрировал эту ошибку, только я могу 'не вижу как.Это обработчик, который используется:
getGroups(): Observable<Group[]> {
return this.http.get<Group[]>(`${this.restUrl}/group`).pipe(
catchError(
error => this.errorService.handleError<Group[]>(
error, 'getGroups', [])
)
);
}
и мой сервис ошибок:
handleError<T>(
error: HttpErrorResponse,
operation = 'operation',
result?: T) {
this.messageService.add(`${operation} failed`);
this.messageService.add(`HTTP error response: status[${error.status}];
error.message:"${error.message}"`);
this.messageService.add(`Is ErrorEvent?
${error.error instanceof ErrorEvent ? "yes":"no"}`);
this.messageService.add(`Is ProgressEvent?
${error.error instanceof ProgressEvent ? "yes":"no"}`);
return of(result as T);
}
Итак, Angular HttpClient, надеюсь, только что обернул эту ошибку - или полностью заменил ее.Могу ли я получить его в моем обработчике ошибок?
Вывод моего обработчика ошибок:
getGroups failed
HTTP error response: status[0]; error.message:"Http failure response for http://localhost:8080/group: 0 Unknown Error"
Is ErrorEvent? no
Is ProgressEvent? yes
И я не вижу, что я могу сделать с ProgressEvent
.
[2019-02-28] Обновление
Как говорит Анжил в комментариях, эта ошибка CORS не является ошибкой HTTP.Это куда-то брошено - и я не знаю что.Это могут быть браузеры, могут быть Angular, RxJS, HttpClient.