Ich habe eine ASP.NET-Web-API. Ich verwende Angular 4 eine einfache HTTP-Anforderung zu tun:Eckig 4 - Kann nicht benutzerdefinierte HTTP-Header in HttpErrorResponse
getInfo(url: string)
{
this.http.get<MyResponse>(url).map((resultModel: MyResponse) => {
return resultModel;
});
}
ich zur Antwort abonnieren thusly:
this.getInfo()
.subscribe(
result => {
if(wasSuccess(result))
{
do things
},
error => {
if(error.status == 401)
{
var url = error.headers["x-login_page"];
window.location.href = url;
}
}
);
Ich habe CORS in der ASP.NET Web API-Controller aktiviert.
Mit Blick auf die Netzwerkantwort in Chrome ich sehe, dass die CORS erlaubt sind richtig, und so sind die benutzerdefinierten Header-Einträge (x-login_page), die ich lesen will:
Screenshot of Chrome Network Output
jedoch wenn ich den benutzerdefinierten Header-Wert für x-login_page mit
var url = error.headers["x-login_page"];
die uRL zuzugreifen versuchen ist nicht definiert. Als ich bei dem Fehlerobjekt in den Chrome-Debugger anschaue, sehe ich, dass das Fehler-Objekt ist ein HttpErrorResponse Objekt:
Wenn ich die Header erweitern, können Sie sehen, dass sie in irgendeiner Weise nicht ähneln der gezeigt Header im Netzwerk Antwort:
ich nicht einen Weg finden, können die tatsächlichen hTTP-Header in den Fehler fangen zu bekommen, anstatt einige substituierte Header. Offen für alle Vorschläge. Vielen Dank!
Oh für die Liebe .... DANKE! – user2047553
Kein Problem! Wenn Sie keine IDE mit Autocomplete verwenden, ist dies nicht sehr offensichtlich. Vergiss nicht, es als die richtige Antwort zu markieren, wenn es für dich funktioniert hat;) – jamesthollowell