2016-02-01 2 views
1

Я сделал перехватчик http, в котором мне нужно оценить заголовки responese и найти конкретный (авторизация). Однако сам перехватчик работает, но он не может отображать заголовки, которые я устанавливаю на стороне сервера, и которые я могу четко видеть на вкладке сети firebug.Угловые заголовки ответов перехватчика HTTP

перехватчик:

app.factory('HttpItc', function($q, $localStorage, $injector) { 
return { 
response: function (response) { 
    //console.log(response); // Contains the data from the response. 

    var freshJwt = response.headers['Authorization']; 

    if (freshJwt) { 
    $localStorage.jwt = freshJwt; 
    } 

    // Return the response or promise. 
    return response; 
} };}); 

headers in firebug:

evalueated response:

Это, как я установить заголовки в Экспресс на стороне сервера:

return res 
        .header('Authorization', jwt) 
        .header('testHeader', 'testValue') 
        .json(user); 

Что происходит? Как я могу получить доступ к заголовкам ответов в перехватчике http?

+0

Можете ли вы попробовать это и посмотреть, есть ли у вас какие-либо результаты console.log (response.headers ('Content-Length')); – stackg91

+0

@ stackg91 это 'null'. Но объект Data в этом ответе правильно установлен и заполнен ... – greengold

+1

Я думаю, вы можете получить заголовки авторизации, вызвав 'var jwt = response.headers ('Authorization')' – themyth92

ответ

5

Решение должно вызвать response.headers('...') (как функцию, а не массив).

Также не забудьте явно разместить заголовки на задней стороне.

EDIT: Чтобы явно выставить заголовки на заднем конце вам нужно будет добавить что-то вроде

response.addHeader("Access-Control-Expose-Headers","yourHeaderName"); 

Это похоже на добавление заголовков CORS, и в настоящее время не работает с «*»

+1

Я думаю, что это должно быть множественное 'response.headers ('...')' – natronite

+0

Не работает '*' с заголовком expose-headers, сделанным моим днем. – Lazyexpert

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