2016-06-18 21 views
27

Ich baue eine Frontend-App mit React und Redux und ich verwende axios, um meine Anfragen zu erfüllen. Ich möchte auf alle Felder im Header der Antwort zugreifen. In meinem Browser kann ich den Header inspizieren und ich kann sehen, dass alle Felder, die ich brauche vorhanden sind (wie Token, uid, etc ...), aber wenn ichAxios erhalten Zugriff auf Antwort Header-Felder

const request = axios.post(`${ROOT_URL}/auth/sign_in`, props); 
request.then((response)=>{ 
    console.log(response.headers); 
}); 

nennen bekomme ich nur

Hier mein Browser-Netzwerk-Tab, wie Sie alle anderen Felder sehen können, sind vorhanden.

enter image description here

Bests.

+0

Wenn Sie ausdrucken axios.defaults.headers gibt dir das, was du vermisst? Einige Header werden auf dieser Ebene konfiguriert, nicht bei jeder Anforderung (siehe https://github.com/mzabriskie/axios#global-axios-defaults). –

+1

Ist es nicht "axios.defaults.headers" zum Konfigurieren des REQUEST-Headers? Params? Ich muss auf die RESPONSE zugreifen. @BenHare – TWONEKSONE

+0

BTW, was Sie Anfrage genannt, ist keine Anfrage. Es ist ein Versprechen für Ihre Antwort. Ihre Anfrage wurde an die Methode post() als Argument übergeben. – Daniel

Antwort

62

Bei CORS-Anfragen können Browser zugreifen nur folgende Antwort-Header standardmäßig:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Verfällt
  • Last -modifiziert
  • Pragma

Wenn Sie Ihre Client-Anwendung andere Header in der Lage sein möchten, zugreifen zu können, benötigen Sie den Access-Control-Expose-Headers Header auf dem Server festgelegt:

Access-Control-Expose-Headers: Access-Token, Uid 
+0

Mein schlechtes Ich habe vergessen, diese Felder zu entlarven. – TWONEKSONE

+3

Wenn Sie Rails mit Rack-Cors verwenden, müssen Sie 'expose: ['Access-Token', 'Uid']' im Ursprung wie folgt setzen: 'resource '*',: headers =>: any,: methods = > [: get,: posten,: put,: patch,: löschen,: options,: head], aussetzen: ['Access-Token', 'Uid'] ' – CWitty

-1

php Benutzer tun dies

header('Access-Control-Expose-Headers: Authentication');