заголовок ответа имеет значение null в $httpProvider.interceptors responseError в angularjs

Я добавляю errorHandlerInterceptor для обработки ошибок, как показано ниже:

(function() {
    'use strict';

    angular
        .module('rasool')
        .config(httpConfig);

    function httpConfig($httpProvider) {

        $httpProvider.interceptors.push('errorHandlerInterceptor');
    }
})();

и в errorHandlerInterceptor я хочу получить конкретный заголовок из заголовков ответа, например:

(function() {
    'use strict';

    angular
        .module('rasool')
        .factory('errorHandlerInterceptor', errorHandlerInterceptor);

    function errorHandlerInterceptor ($q, toaster, $rootScope, $timeout) {
        var service = {
            responseError: responseError
        };

        return service;

        function responseError (response) {

            var errorHeader = response.headers('X-app-alert');

            if(errorHeader) {
                // do something
            }

            return $q.reject(response);
        }
    }
})();

Проблема в том, что errorHeader имеет значение null, но когда я проверяю заголовки ответа с помощью Chrome DevTools, этот заголовок существует и имеет значение, как вы можете видеть на снимке экрана ниже:

введите здесь описание изображения

ОБНОВЛЕНИЕ

Все эти части работают правильно на веб-сайте, но я создал копию файлов html, js и css для создания приложения ionic1, но когда я запускаю команду ionic serve для тестирования приложения, у меня возникает эта проблема.


person Rasool Ghafari    schedule 26.05.2017    source источник
comment
Вы уверены, что к тому времени, когда вы пытаетесь получить доступ к заголовку ответа, обещание уже разрешено?   -  person Setup    schedule 26.05.2017
comment
Нестандартный заголовок должен быть указан с Access-Control-Expose-Headers.   -  person georgeawg    schedule 26.05.2017
comment
@georgeawg, как вы видели выше на скриншоте, X-app-alert уже существует в заголовках ответов, но angular не получает этот заголовок   -  person Rasool Ghafari    schedule 01.06.2017


Ответы (1)


Вы пытались назвать это так:

var errorHeader = response.headers();

а после errorHeader должен быть объект, содержащий нужные вам данные.

person Tonio    schedule 26.05.2017