debugtypescriptangularCritical
I get "Http failure response for (unknown url): 0 Unknown Error" instead of actual error message in Angular
Viewed 0 times
angularerrorurlunknownfailureforactualmessageresponseinstead
Problem
I'm using Angular 4
The problem is, when the request fails I see a generic
How do I access the actual response message I can see in chrome dev tools?
Here's a screenshot demonstrating the problem:
HttpClient to send requests to external service. It is a very standard setup:this.httpClient.get(url).subscribe(response => {
//do something with response
}, err => {
console.log(err.message);
}, () => {
console.log('completed');
}The problem is, when the request fails I see a generic
Http failure response for (unknown url): 0 Unknown Error message in console. Meanwhile, when I inspect the failed request in chrome I can see the response status is 422, and in the "preview" tab I see the actual message desribing failure cause. How do I access the actual response message I can see in chrome dev tools?
Here's a screenshot demonstrating the problem:
Solution
The problem was related to CORS. I noticed that there was another error in Chrome console:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 422.
Once the backend was correctly configured I could access actual error message in Angular code.
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 422.
This means the response from backend server was missing Access-Control-Allow-Origin header even though backend nginx was configured to add those headers to the responses with add_header directive.
However, this directive only adds headers when response code is 20X or 30X. On error responses the headers were missing. I needed to use always parameter to make sure header is added regardless of the response code:
add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;`Once the backend was correctly configured I could access actual error message in Angular code.
Context
Stack Overflow Q#47180634, score: 142
Revisions (0)
No revisions yet.