2013-06-11 8 views
61

Sto utilizzando $http per effettuare una chiamata API che sta inviando alcune intestazioni personalizzate come X-Foo. Tuttavia non riesco ancora a capire come leggerli. All'interno della funzione $http({...}).success(function (data, status, headers, config) {...}), headers è una funzione che dovrebbe darmi un hash di tutte le intestazioni ma mostra solo l'intestazione content-type. C'è un modo per ottenere le intestazioni di risposta?

+0

Stai usando Firefox? Vedi http://stackoverflow.com/questions/14188662/angularjs-and-apiary-io-cant-read-any-response-headers. –

+0

No, cromato. La correzione FF specifica funziona per Chrome? –

+2

Le richieste vengono inoltrate a un dominio diverso o allo stesso dominio? Ho provato a inviare la richiesta allo stesso dominio e sono in grado di vedere le intestazioni personalizzate. –

risposta

144

Le intestazioni personalizzate saranno visibili nello stesso dominio. Tuttavia, per la situazione di crossdomain, il server deve inviare l'intestazione Access-Control-Expose-Headers: X-Foo, ... per rendere visibili le intestazioni personalizzate.

+7

Grazie! Mi hai salvato la notte – JRun

+3

Sembra che devi specificare il nome effettivo dell'intestazione anziché un carattere jolly. 'Access-Control-Expose-Headers: *' non funziona, ma 'Access-Control-Expose-Headers: Etag'. –

+6

questo non sembra funzionare per me con '$ http' angular – chovy

0

Spring 4.0+ fornire @CrossOrigin annotazione che ha i seguenti parametri

  1. origini = elenco di virgola separati origine.
  2. exposedHeaders = elenco di parametri personalizzati conteggio separato da comunicazione.

esempio

@CrossOrigin(origins = "*", exposedHeaders ="X-Total-Count") 
Problemi correlati