Mere
Jeg får "Http-fejlsvar for (ukendt url): 0 Unknown Error" i stedet for den faktiske fejlmeddelelse i Angular
Jeg bruger Angular 4 HttpClient
til at sende anmodninger til ekstern tjeneste. Det er en meget standardopsætning:
this.httpClient.get(url).subscribe(response => {
//do something with response
}, err => {
console.log(err.message);
}, () => {
console.log('completed');
}
Problemet er, at når anmodningen mislykkes, ser jeg en generisk
Http failure response for (unknown url): 0 Unknown Error
-meddelelse i konsollen. I mellemtiden, når jeg inspicerer den mislykkede anmodning i chrome kan jeg se svarstatus er 422, og i "preview" fanen ser jeg den faktiske meddelelse, der beskriver fejlårsagen.
Hvordan får jeg adgang til den faktiske svarmeddelelse, som jeg kan se i chrome dev tools?
Her's et skærmbillede, der demonstrerer problemet:
[
101
3
Problemet var relateret til CORS. Jeg bemærkede, at der var en anden fejl i Chrome-konsollen:
Det betyder, at svaret fra backend-serveren manglede
Access-Control-Allow-Origin
-headeren, selv om backend nginx var konfigureret til at tilføje disse headere til svarene medadd_header
-direktivet.Dette direktiv tilføjer dog kun headere, når svarkoden er 20X eller 30X. Ved fejlsvar manglede overskrifterne. Jeg var nødt til at bruge parameteren
always
for at sikre, at overskriften tilføjes uanset svarkoden:add_header 'Access-Control-Allow-Origin' 'http://localhost:4200' always;
Da backend'en var korrekt konfigureret, kunne jeg få adgang til den faktiske fejlmeddelelse i Angular-kode.
For mig var det forårsaget af en JsonSerializerException på serversiden.
klienten sagde:
Ved at gøre svartypen enklere ved at fjerne sløjferne blev problemet løst.
Hvis du bruger Laravel som din backend, skal du redigere din .htaccess-fil ved blot at indsætte denne kode for at løse problemet CROS i dit Angular- eller IONIC-projekt