【问题标题】:Angular Js - set token on header defaultAngular Js - 在标头默认设置令牌
【发布时间】:2014-06-08 07:35:34
【问题描述】:

我正在尝试向每个 API 调用添加带有我的访问令牌的标头。它适用于所有 GET 请求,但是一旦我尝试进行 POST,就不会添加标头。

这是我添加令牌的方法:

app.factory('api', function ($http, $cookies) {
return {
    init: function (token) {
        $http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie;
    }
  };
});

从这里调用:

app.run(function ($cookies, $http, $location, $rootScope,api) {
    $rootScope.location = $location;
    api.init();
});

我尝试过如下操作:

app.factory('api', function ($http, $cookies) {
return {
    init: function (token) {
        $http.defaults.headers.common['Token'] = token || $cookies.loginTokenCookie;
        $http.defaults.headers.post['Token'] = token || $cookies.loginTokenCookie;

    }
};
});

但这也行不通。它仅在我更改标题键名称时有效,如下所示:

 $http.defaults.headers.post['Token-Post'] = token || $cookies.loginTokenCookie;

如何在 AngularJs 中为帖子分配默认标头并获取请求?

【问题讨论】:

    标签: angularjs angularjs-http


    【解决方案1】:

    也许我错了,但为什么不只是:

    app.config(['$httpProvider', function ($httpProvider) {
        $httpProvider.defaults.headers.post['token'] = 'your_token';
    }]);
    

    拦截器比较重,在这种情况下不需要

    【讨论】:

    • 在此之后如何访问?
    【解决方案2】:

    与其将令牌放在每个服务(或调用)内的标头上,不如使用$http 拦截器 (docs here)。

    然后,您可以在每个请求上放置令牌。无论请求是 GET 还是 POST,这都会起作用。

    JS 示例:

    $httpProvider.interceptors.push(function($q, $cookies) {
        return {
         'request': function(config) {
    
              config.headers['Token'] = $cookies.loginTokenCookie;
              return config;
          }
        };
      });
    

    【讨论】:

    • 效果很好。谢谢。
    • 为什么这是比设置$httpProvider.defaults.headers.post['token'] = 'your_token'; 更好的方法?
    • 请注意,在 angular >= 1.4 中,您应该使用:$cookies.get('loginTokenCookie');
    猜你喜欢
    • 2018-10-13
    • 2016-03-13
    • 2018-09-01
    • 2016-08-04
    • 2015-08-13
    • 2018-07-08
    • 2020-05-26
    • 2018-04-11
    • 2015-05-08
    相关资源
    最近更新 更多