Ich sende eine Anfrage an einen Dienst, der Authentifizierung erfordert, und da mein aktueller Status nicht ist, erhalte ich eine 401-Antwort. Ich versuche, um zu sehen, ob ich das in meinem Code verarbeiten kann, auf Client-Seite und in Maschinenschrift geschrieben:Erhalten von Status 0 anstelle von 401 in der Antwort
this.http.post(url, body, options).catch(e => {
if (e.status === 401) {
//Handle 401
}
return Observable.throw(e);
});
Aber das Problem ist, dass e.status
Null ist, obwohl von der Netzwerk Panel kann ich sehen Der Status der Antwort ist tatsächlich 401. Ist das ein Problem mit Angular oder habe ich etwas falsch gemacht?
Dies ist der Rückgabewert für JSON.strigify(e)
:
{
"_body": { "isTrusted": true },
"status": 0,
"ok": false,
"statusText": "",
"headers": {},
"type": 3,
"url": null
}
BTW, ich bin mit Angular 4.0.0 (Kern und http).
Dies ist der Fehler, den ich bin wegen der Post-Anforderung in der Konsole immer oben gesendet:
(2) POST http://192.168.2.10:8080/test 401()
XMLHttpRequest cannot load http://192.168.2.10:8080/test. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.2.10:4200' is therefore not allowed access. The response had HTTP status code 401.
Ein weiteres Geheimnis ist, dass es 2 Post-Anforderung Fehler auf der Konsole gemeldet, während es nur eine Gesendete nach Netzwerk-Panel.
Was ist der Grund, zu fangen und dann rethrow den Fehler hilft? Warum abonnierst du keinen onError? Sie sollten es verwenden, um die Sequenz neu zu starten, es sei denn, Sie möchten den Wert für einige Nebeneffekte überprüfen. Verwenden Sie in diesem Fall besser einen .do-Operator – LookForAngular
Erhalten Sie einen CORS-Fehler? –
@LookForAngular dieser Code ist nur zu sehen, ob ich 401 erkennen kann. Sobald ich das getan habe, würde ich etwas anderes zurückgeben. – Mehran