Ошибка CORS переопределяет ошибки 4xx и 5xx, полученные угловым приложением - PullRequest
0 голосов
/ 28 июня 2019

Frontend Angular 7.
Бэкэнд Laravel 5.1

Всякий раз, когда мы получаем ошибку от бэкэнда, выдается ошибка CORS, потому что в ответе об ошибке нет заголовков CORS.

"google" предложил решения по добавлению CORS в ответы об ошибках, в результате чего заголовки добавлялись ко ВСЕМ сообщениям об ошибках независимо от пути. Это решение не подходит, потому что мне нужно, чтобы заголовки добавлялись только к определенным конечным точкам, а не ко всем.

Так что я подумал, что могу проигнорировать ошибку CORS и обработать статус ответа, но оказалось, что не могу.

return this.http.get(path, { headers: this.authHeaders() }).map(
  (result: Response) => { return result; } // let the caller handle OK response
).catch((error: any) => {
  if ( error.status === 500 ) { // handle error immediately
    svc.handle500();
    return new Observable<any>();
  }
  return new Observable<any>(error); // let the caller handle the error
});

строка проверки 500 ошибок пропускается, потому что ошибка CORS является последней и имеет error.status === 0. Выход на консоль Chrome
На изображении выше вы можете видеть, что chrome дважды получил ошибку 500, а затем произошла ошибка CORS. Последняя строка вывода консоли - объект ответа об ошибке http. Таким образом, вы можете ясно видеть, что его статус равен 0 и сообщение «Неизвестная ошибка».

Это очень плохо, потому что я не могу по-разному обрабатывать разные ошибки. Все они имеют статус 0.

Какое может быть решение? Как я могу поймать реальные ошибки?

Также приветствуется решение о том, как добавлять заголовки CORS к ответам об ошибках только для определенных путей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...