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 к ответам об ошибках только для определенных путей.