以下方法不起作用:
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);
});
我收到"消息:令牌无效",我在firebug中看到了request-http-headers,但是没有设置它们。
答案 0 :(得分: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');
}]);