如何在Angular Resource中设置默认标头值?

时间:2015-12-08 18:42:19

标签: angularjs http-headers ngresource angularjs-resource angular-http-interceptors

以下方法不起作用:

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,但是没有设置它们。

1 个答案:

答案 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');
}]);