Domanda Axios ottiene l'accesso ai campi dell'intestazione di risposta


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 controllare l'intestazione e posso vedere che tutti i campi di cui ho bisogno sono presenti (come token, uid, ecc ...), ma quando chiamo

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

Ho capito

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

Qui la mia scheda di rete del browser, come è possibile vedere tutti gli altri campi sono presenti.

enter image description here

Bests.


44
2018-06-18 13:29


origine


risposte:


In caso di richieste CORS, i browser possono solo accedere alle seguenti intestazioni di risposta per impostazione predefinita:

  • Cache-Control
  • Content-Language
  • Tipo di contenuto
  • Scade
  • Ultima modifica
  • Pragma

Se desideri che la tua app client sia in grado di accedere ad altre intestazioni, devi impostare la Access-Control-Expose-intestazioni intestazione sul server:

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

97
2018-06-20 20:15



Questo mi ha davvero aiutato, grazie a Nick Uraltsev per la tua risposta.

Per quelli di voi che usano nodejs con cors:

...
const cors = require('cors');

const corsOptions = {
  exposedHeaders: 'Authorization',
};

app.use(cors(corsOptions));
...

Nel caso in cui si sta inviando la risposta nel modo di res.header('Authorization', `Bearer ${token}`).send();


0
2017-07-01 20:41



gli utenti php lo fanno

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

-1
2018-06-07 10:37