Пользовательский заголовок AngularJS $http для всех запросов
Мне было интересно, есть ли способ настроить заголовок всех HTTP-запросов с добавлением пользовательской информации. Что-то вроде config:
var config = {headers: {
'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;odata=verbose'
}
};
Но для всех $http звонков я буду делать в разных сервисах. Я уверен, что есть решение: D.Thanks
Ответы
Ответ 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
выполняется только один раз.