2015-11-12 3 views
5

Ich benutze angular2-http (alpha.44) -Modul, um Daten von einem REST Api abzurufen. Ich kann nicht herausfinden, wie ich auf die Informationen zugreifen kann, die in der Header-Map der Antwort enthalten sind, von der ich ein spezifisches Feld benötige. Beispiel:Angular 2: Kann nicht auf Antwortheader in einer HTTP-Anfrage zugreifen

var req = new Request({ 
    url: `localhost/api/products`, 
    method: RequestMethods.Get 
}); 

this.http.request(req).subscribe(
    res => { 
    // Can't access the headers of the response here.... res.headers is empty 
    }, 
    error => { ... }, 
    _ => {} 
); 

Merkwürdigerweise, wenn ich den Netzwerkverkehr in dem Entwickler-Tool des Browsers überprüfen, die Antwort-Header vorhanden sind ...

Antwort

5

Es gibt bereits Problem na über diese problema eröffnete am Github: https://github.com/angular/angular/issues/5237#issuecomment-156059284

Sie sollten es überprüfen, da jemand einen Workaround gepostet hat.

UPDATE

Die Winkel Team hat dieses Problem bereits gelöst.

+4

Die vorgeschlagene Problemumgehung löst nicht mein Problem ... – cangosta

+1

Wenn das Problem gelöst wurde. Könnten Sie bitte die Lösung teilen? Ich suche auch nach der Lösung. –

4

Die Lösung ist in dem bereits verknüpft Problem, aber in einem späteren Kommentar: https://github.com/angular/angular/issues/5237#issuecomment-239174349

Mit Ausnahme einiger generischen Header nur die Header als einen Wert von Access-Control-Expose-Headers Header aufgeführt werden (mit anderen auch vielleicht) in Angular2 abgebildet werden. Dies muss auf der Backend-Seite hinzugefügt werden.

Für mich dauerte es mehr als eine Stunde, um dies für Authorization Header herauszufinden. Ich dachte, es ist nicht dieser benutzerdefinierte Header, aber es ist.

In PHP Aufruf etwas wie folgt aus: header("Access-Control-Expose-Headers: Authorization, X-Custom-header");

Wenn Sie Laravel als Backend mit barryvdh/laravel-cors tun, um diese Einrichtung in der config/cors.php-Datei verwenden.

Verwandte Themen