2016-06-18 31 views
27

Buduję aplikację frontend z React i Redux i używam axios do wykonywania moich żądań. Chciałbym uzyskać dostęp do wszystkich pól w nagłówku odpowiedzi. W przeglądarce można sprawdzić nagłówek i widzę, że wszystkie pola, które trzeba występują (takich jak dowód, uid, etc ...), ale gdy zgłoszęAxios uzyskuje dostęp do pól nagłówka odpowiedzi

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

mogę tylko

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

Tutaj widoczna jest moja karta sieci przeglądarki, ponieważ widać wszystkie pozostałe pola.

enter image description here

najlepszych.

+0

Jeśli wydrukować axios.defaults.headers daje ci jeden z tych, których brakuje? Niektóre nagłówki są skonfigurowane na tym poziomie, a nie na poziomie każdego żądania (zobacz https://github.com/mzabriskie/axios#global-axios-defaults) –

+1

Czy to nie jest "axios.defaults.headers" do skonfigurowania nagłówka REQUEST params? Muszę uzyskać dostęp do RESPONSE. @BenHare – TWONEKSONE

+0

BTW, to, co nazywasz prośbą, nie jest prośbą. To obietnica twojej odpowiedzi. Twoja prośba została przekazana do metody post() jako argumenty. – Daniel

Odpowiedz

62

W przypadku wniosków Cors, przeglądarek mają dostęp tylko następujące nagłówki odpowiedzi domyślnie:

  • Cache-Control
  • Content-Language
  • Content-Type
  • wygasa
  • Ostatnia -Modyfikowany:
  • Pragma

Jeśli chcesz aplikację kliencką, aby móc uzyskać dostęp do innych nagłówków, trzeba ustawić nagłówek Access-Control-Expose-Headers na serwerze:

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

Mój zły, że zapomniałem wystawić te pola. – TWONEKSONE

+3

Jeśli używasz Railsów z Rack-Cors musisz ustawić 'expose: ['Access-Token', 'Uid']' na początku jak: 'resource '*',: headers =>: any,: methods = > [: get,: post,: put,: patch,: delete,: options,: head], expose: ['Access-Token', 'Uid'] ' – CWitty

-1

użytkowników php to zrobić

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