Перехватчики $httpProvider Невозможно установить свойство «x» неопределенного

Вот сделка, которую я хочу добавить токен авторизации и idx к каждому http-запросу.
когда я пытаюсь, я получаю TypeError: Cannot set property 'site' of undefined
вот перехватчик

$httpProvider.interceptors.push(function($q, $cookies,$location) {
  return {
    'request': function(config) {   
      config.data.auth ='hasAuth';
      config.data.token = $cookies.token;
      config.data.idx = $cookies.idx;
      console.log(config);

      return config;
    }

  };
});

А вот запрос $http.

app.controller('coolCtrl', function($scope, $http, makeUrl, $cookies){
    var info={};
    info = $cookies.eidx;

    var test = $http.post("https://example.com/uri/list", info )
    .success(function (data) {
        $scope.data = data
    });

});

И ошибка
TypeError: Cannot set property 'auth' of undefined

Я чувствую, что запутался во всех обещаниях.
Заранее спасибо
-Джеймс


person James Harrington    schedule 06.06.2014    source источник
comment
Посмотрите сообщение с той же ошибкой: stackoverflow.com/questions/16589752/   -  person PM 77-1    schedule 07.06.2014
comment
Спасибо, но проблема не та.   -  person James Harrington    schedule 09.06.2014


Ответы (1)


После множества отладок я, наконец, понял это.

$httpProvider.interceptors.push(function($q, $cookies,$location) {
return {
    'request': function(config) { 
      if (typeof config.data !== undefined){
        config.data.auth ='hasAuth';
        config.data.token = $cookies.token;
        config.data.idx = $cookies.idx;
        console.log(config);
      }
      return config;
    }

  };
});

angular пытался установить config.data.auth при выполнении любого запроса, включая запросы на получение без данных. поэтому я должен вручную проверить данные, а затем установить их.

person James Harrington    schedule 09.06.2014