如何在 Angular 资源中设置默认 header 值?
How to set default header values in 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);
});
我得到 "Message: Token invalid",我在 firebug 中看到 request-http-headers,它们没有设置。
您正在为获取请求设置 headers 那么它应该在 $resource
的 get
选项中
$resource('http://my-rest-api/whatever/:id',{},{
get:{
method:"GET",
headers:{
'token': token,
'user': user
}
},
});
如果您想将此 header 信息添加到每个请求,那么您可以使用 http 拦截器,它将在每个请求上添加 header 信息。
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');
}]);
以下方法不起作用:
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);
});
我得到 "Message: Token invalid",我在 firebug 中看到 request-http-headers,它们没有设置。
您正在为获取请求设置 headers 那么它应该在 $resource
get
选项中
$resource('http://my-rest-api/whatever/:id',{},{
get:{
method:"GET",
headers:{
'token': token,
'user': user
}
},
});
如果您想将此 header 信息添加到每个请求,那么您可以使用 http 拦截器,它将在每个请求上添加 header 信息。
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');
}]);