Как установить значения заголовка по умолчанию в Angular Resource?
Следующий подход не работает:
angular.module('myApp.myModule').factory('MyResource', function($resource, $cookies) {
var token = $cookies.get('token');
var user = $cookies.get('username');
console.log ("Token: "+token+" User: "+user);
return $resource(
'http://my-rest-api/whatever/:id',
{
headers: {
'token': token,
'user': user
}
}
)});
Консоль показывает правильные данные, но они не были отправлены..
Это часть где-то в связанном контроллере (отрывок):
var getEntryOne = MyResource.get({ id: 1 }, function() {
console.log("Result: "+getEntryOne);
});
Я получаю "Сообщение: токен недействителен", я вижу запрос-http-заголовки в firebug, они не были установлены.
1 ответ
Решение
Вы устанавливаете заголовки для запроса на получение, тогда он должен быть там в get
вариант $resource
$resource('http://my-rest-api/whatever/:id',{},{
get:{
method:"GET",
headers:{
'token': token,
'user': user
}
},
});
Если вы хотите добавить эту информацию заголовка к каждому запросу, то у вас может быть http inteceptor, который будет добавлять информацию заголовка к каждому запросу.
app.service('MyResourceInterceptor', ['$cookies', function($cookies) {
var token = $cookies.get('token'),
user = $cookies.get('username'),
service = this;
service.request = function(config) {
config.headers['token'] = token;
config.headers['user'] = user;
return config;
};
}]);
app.config([ '$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('MyResourceInterceptor');
}]);