Я не могу установить пользовательский заголовок HTTP, взятый из ngInit
в AngularJS.Глобальный набор настраиваемого HTTP-заголовка в AngularJS от ngInit
Я установил переменную с помощью ngInit в HTML:
<div ng-init="myApiKey='valueOfVar'"></div>
Теперь я хочу использовать эту переменную во всех запросах HTTP. Я попытался установить его в app.config и в контроллере тоже.
Если я установил его немедленно, переменная не определена.
Если я установил его в функции обратного вызова
$scope.$watch
, переменная определена, но HTTP-запросы без этого заголовка.
Я установил заголовок с:
$http.defaults.headers.common.Authorization = 'something';
(или с помощью $httpProvider
, когда в app.config), а затем использовать его в процессе эксплуатации с использованием $resource
. Мой код выглядит как [это] [1]
Я попытался установить его в config
, в run
, в контроллере и в качестве сервиса, но пока ничего не работало. Заранее благодарю вас за любой совет.
Edit: Теперь у меня есть перехватчик:
myApp.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
});
myApp.factory('httpRequestInterceptor', ['$rootScope', function($rootScope) {
return {
request: function($config) {
$config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;
return $config;
}
};
}]);
Но $rootscope.apiKey
(который установлен в главном контроллере) является undefined
при первом вызове. После этого все в порядке (и установлено).
Почему бы не установить его на стороне сервера? – Fals
@Fals Как? Если я хочу использовать эту переменную в Angular, она должна быть установлена в ее js-файлах или нет? – user1023979