2015-03-07 3 views
10

Мой ответ HTTP содержит Authentication заголовки (как указано здесь: Authentication:76efbc0946773b62c93e952b502a47acd898200f6f80dc46ac87ffc501c00780), когда я проверить запрос с инспектором, но вызов headers("Authentication") возвращается null

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

Do у вас есть представление о том, что я могу сделать не так?

FYI, я попытался переключить его обратно на «обещание», с .then, и проблема остается прежней.

+4

Вы, вероятно, нужно добавить Access-Control-Expose-Headers вашего ответа от сервера, чтобы сделать его доступным - см http://stackoverflow.com/ вопросы/17038436/read-response-headers-when-use-http-of-angularjs? lq = 1 –

+0

@BradBarber вот и все. Ответ, если вы хотите получить награду. – GeoffreyB

ответ

21

Ваш код выглядит хорошо, но если это запрос CORS, сервер должен включить Access-Control-Expose-Headers: {любые пользовательские заголовки} в ответе.

Там в предыдущий вопрос/ответ с более подробной информации: Reading response headers when using $http of Angularjs

+0

Позволит CORS не повлиять на безопасность. Не следует отправлять необходимые данные в тело ответа. – maheshsgr

5

В успех обратного вызова сайте:

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

Я думаю, что первая строка возвращает результат в вашем КАС.
У второго есть ли у вас «аутентификация»?

Пользовательские заголовки будут видны в том же домене. В случае с crossdomain вам необходимо отправить заголовок Access-Control-Expose-Headers: Authentication, ... с сервера.

Смежные вопросы