前端Angular7。
后端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 console output
在上图中,您可以看到chrome两次出现错误500,然后是CORS错误。控制台的最后一行是http错误响应对象。因此,您可以清楚地看到其状态等于0,并且消息为“未知错误”。
这非常糟糕,因为我无法以不同的方式处理不同的错误。它们的状态均为0。
有什么解决方案?我怎样才能发现真正的错误?
也欢迎解决方案如何将CORS标头添加到仅针对某些路径的错误响应中。