当前位置: 首页 > 面试题库 >

Angular Js-在标头上设置令牌默认

丘华翰
2023-03-14
问题内容

我正在尝试向每个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中为帖子分配默认标题并获取请求?


问题答案:

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

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

JS示例:

$httpProvider.interceptors.push(function($q, $cookies) {
    return {
     'request': function(config) {

          config.headers['Token'] = $cookies.loginTokenCookie;
          return config;
      }
    };
  });


 类似资料:
  • 使用axios,我尝试为所有请求设置默认标头身份验证令牌。但默认情况下它没有被发现,并且对于任何其他api调用,“授权”没有在标头中设置。 这是一个常用文件 登录后,我像这样设置标题 但是当我调用任何其他API标头进行授权时,CountryApi.js所在的位置没有设置 Country.js是这个

  • 我使用curl命令调用我的REST服务 我试图使用Python的请求库映射相同的代码 我的问题是,如何在代码中设置我的TOKEN值?

  • 问题内容: 为了发送OAuth2令牌,我在AngularJS上设置了默认标头,如下所示: 这很好用,但对于一个特定的请求,我不需要此标头(出现错误)。 执行该请求时,是否可以排除默认标头? 谢谢! 感谢Riron让我走上正确的道路。答案是: 问题答案: 当您使用$ http拨打电话时,可以通过在请求配置中直接提供默认头来覆盖默认头: 否则,您仍可以在$ http配置中使用参数转换请求。见doc:

  • 问题内容: 我正在开发DJANGO + AngularJS应用程序,其中django不提供角度部分。 我将角度设置如下: 然后,在执行任何POST之前,我执行GET以设置cookie。我可以通过Chrome确认已设置Cookie: (在Chrome开发者工具的resources / cookies / localhost中可见) 但是,当我执行POST时,没有设置标头 这是Chrome记录的POS

  • 问题内容: 我有一个带有多个控制器的webapp。我在一个控制器中(通过)在回调中设置服务的默认标头。但是,这些标头不会在其他控制器的后续调用中设置。是否必须为我拥有的每个控制器设置一次,或者一次设置足够? 问题答案: 您应该使用以下两种方法之一: 在运行块中设置$ http.defaults.headers 使用拦截器

  • 我正在使用ASP.NET WebApi创建一个RESTful API。我正在我的一个控制器中创建一个PUT方法,代码如下所示: 当我通过AJAX使用浏览器将其放到该位置时,它给出了以下例外情况: 标头名称使用不当。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpReponseMessage一起使用,内容标头与HttpContent对象一起使用。 但是不是一个完全有效的