2015-03-07 21 views
10

Moja odpowiedź http zawiera uwierzytelniania nagłówki (jak wspomniano tutaj: Authentication:76efbc0946773b62c93e952b502a47acd898200f6f80dc46ac87ffc501c00780) kiedy zbadać wniosek do inspektora, ale wezwanie do headers("Authentication") zwrotów null

return $http({ 
    method: "GET", 
    url: url, 
    headers: { 
     'Content-Type': "application/json" 
    } 
}).success(function (data, status, headers, config) { 
    console.log(headers("Authentication")); 
}) 

Do masz pojęcie o tym, co robię w niewłaściwy sposób?

FYI, starałem się przełączyć z powrotem na "obietnicę" sposób, z .then, a problem jest wciąż taki sam.

+4

Prawdopodobnie trzeba dodać Access-Control-Expose-headers na odpowiedź od serwera do udostępnienia go - patrz http://stackoverflow.com/ pytania/17038436/read-headers-when-using-http-of-angularjs? lq = 1 –

+0

@BradBarber to wszystko. Odpowiedz, jeśli chcesz zdobyć nagrodę. – GeoffreyB

Odpowiedz

21

Twój kod wygląda dobrze, ale jeśli jest to żądanie CORS, serwer musi uwzględniać nagłówki Access-Control-Expose: {wszelkie niestandardowe nagłówki} w odpowiedzi.

Istnieje poprzednie pytanie/odpowiedź więcej szczegółów: Reading response headers when using $http of Angularjs

+0

Czy włączenie CORS nie wpłynie na bezpieczeństwo. Nie powinniśmy wysyłać wymaganych danych w treści odpowiedzi. – maheshsgr

5

w sukces wywołania zwrotnego put:

console.log(headers('content-type')); 
console.log(headers()); // All headers 

Myślę, że pierwsza linia zwrócić wynik w CAS.
W drugiej części, czy masz "Uwierzytelnienie"?

Niestandardowe nagłówki będą widoczne w tej samej domenie. W przypadku crossdomaina musisz wysłać nagłówek Access-Control-Expose-Headers: Authentication, ... z serwera.

Powiązane problemy