2016-06-18 36 views
27

Sto costruendo un'app di frontend con React e Redux e sto usando axios per eseguire le mie richieste. Vorrei avere accesso a tutti i campi nell'intestazione della risposta. Nel mio browser posso ispezionare l'intestazione e posso vedere che tutti i campi di cui ho bisogno sono presenti (ad esempio pegno, uid, ecc ...), ma quando chiamoAxios ottiene l'accesso ai campi di intestazione risposta

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

io ottenere solo

Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"} 

Qui la scheda della mia rete del browser, come potete vedere tutti gli altri campi sono presenti.

enter image description here

Bests.

+0

Se si stampa fuori axios.defaults.headers ti dà quello che ti manca? Alcune intestazioni sono configurate a quel livello, non a quello di ciascuna richiesta (vedere https://github.com/mzabriskie/axios#global-axios-defaults) –

+1

Non è 'axios.defaults.headers' per configurare l'intestazione REQUEST params? Devo accedere a quello di RESPONSE. @BenHare – TWONEKSONE

+0

BTW, ciò che hai chiamato richiesta, non è una richiesta. È una promessa per la tua risposta. La tua richiesta era ciò che hai passato al metodo post() come argomenti. – Daniel

risposta

62

In caso di richieste CORS, i browser possono accedere solo le seguenti intestazioni di risposta di default:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Valida
  • Ultima -Modificato
  • Pragma
.210

Se vuoi che il tuo applicazione client per poter accedere ad altre intestazioni, è necessario impostare il Access-Control-Expose-Headers intestazione sul server:

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

Il mio male ho dimenticato di esporre quei campi. – TWONEKSONE

+3

Se si utilizza Rails con Rack-Cors è necessario impostare 'expose: ['Access-Token', 'Uid']' sull'origine come: 'resource '*',: headers =>: any,: methods = > [: get,: post,: put,: patch,: delete,: options,: head], esporre: ['Access-Token', 'Uid'] ' – CWitty

-1

utenti di PHP fanno

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