2013-06-11 12 views
61

Ich benutze $http, um eine API-Anruf, der einige benutzerdefinierte Header wie X-Foo sendet. Allerdings kann ich noch nicht herausfinden, wie man sie liest. Innerhalb der $http({...}).success(function (data, status, headers, config) {...}) Funktion, headers ist eine Funktion, die mir einen Hash aller Header geben sollte, aber es zeigt nur die Kopfzeile content-type. Gibt es eine Möglichkeit, die Antwortheader zu erhalten?

+0

Sind Sie mit Firefox? Siehe http://stackoverflow.com/questions/14188662/angularjs-and-apiary-io-cant-read-any-response-headers. –

+0

Nein, Chrom. Funktioniert der FF-spezifische Fix für Chrome? –

+2

Werden die Anforderungen an eine andere Domäne oder dieselbe Domäne gesendet? Ich habe das Senden der Anfrage an die gleiche Domain getestet und kann die benutzerdefinierten Header sehen. –

Antwort

144

Der benutzerdefinierte Header wird in derselben Domäne sichtbar sein. Für die Cross-Domain-Situation muss der Server jedoch Access-Control-Expose-Headers: X-Foo, ... Header senden, um die benutzerdefinierten Header sichtbar zu machen.

+7

Danke! Sie haben meine Nacht gespeichert – JRun

+3

Es scheint, dass Sie den tatsächlichen Header-Namen anstelle eines Platzhalters angeben müssen. 'Access-Control-Expose-Header: *' funktioniert nicht, aber 'Access-Control-Expose-Headers: Etag' funktioniert. –

+6

das schien nicht mit mir zu funktionieren mit eckigen '$ http' – chovy

0

Frühling 4.0+ @CrossOrigin Anmerkung bereitzustellen, die

folgende Parameter hat
  1. Herkunft = Liste der Comma Herkunft getrennt.
  2. exposedHeaders = Liste der durch Kommas getrennten Anzahl benutzerdefinierter Parameter.

Beispiel

@CrossOrigin(origins = "*", exposedHeaders ="X-Total-Count") 
Verwandte Themen