Подтвердить что ты не робот

Пользовательский заголовок AngularJS $http для всех запросов

Мне было интересно, есть ли способ настроить заголовок всех HTTP-запросов с добавлением пользовательской информации. Что-то вроде config:

 var config = {headers: {
            'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
            'Accept': 'application/json;odata=verbose'
        }
    };

Но для всех $http звонков я буду делать в разных сервисах. Я уверен, что есть решение: D.Thanks

4b9b3361

Ответ 1

Вы можете создать перехватчик $http, чтобы расширить свой заголовок:

myapp.factory('httpRequestInterceptor', function () {
  return {
    request: function (config) {

      config.headers['Authorization'] = 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==';
      config.headers['Accept'] = 'application/json;odata=verbose';

      return config;
    }
  };
});

myapp.config(function ($httpProvider) {
  $httpProvider.interceptors.push('httpRequestInterceptor');
});

Ответ 2

Более простым решением может быть использование блока Angular run:

app.run(['$http', function ($http) {
    $http.defaults.headers.common['Authorization'] = 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==';
    $http.defaults.headers.common['Accept'] = 'application/json;odata=verbose';
}]);

Примечание. Это решение позволяет передавать статическое значение только один раз, так как блок run выполняется только один раз.