angular.js $resources 设置授权头

Posted

技术标签:

【中文标题】angular.js $resources 设置授权头【英文标题】:angular.js $resources setting Authorization header 【发布时间】:2014-07-11 07:30:49 【问题描述】:

js

我正在尝试做的是向服务器发出 REST API 请求。

请求应该是 'GET' 方法并包含 'Authorization' 标头。

我与 REST 服务器通信的工厂代码是这样的 '使用严格';

angular.module('mabidualApp')
  .factory('User', function ($resource, config) 

    return $resource(config.API+':url/:id', 
        url: '@url', id: '@id'
    ,  //parameters default
      auth: 
        method: 'POST',
        params: 
            url: "token",
        
    ,
      get: 
        method: 'GET',
        headers:'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w' ,
        params: 
          url:"users",
          id:'me'
        
      
);

最合适的问题来了

headers:'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w' ,

如果我添加标题,方法将更改为“OPTIONS”而不是“GET”。我发现它与 CORS 预检有关,但我不知道如何禁用它..

所以我尝试在 app.js 中更改我的配置

  .config(function($locationProvider, $routeProvider, $httpProvider) 
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
    $httpProvider.defaults.headers.get['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w';

第二个问题来了

$httpProvider.defaults.headers.get['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w';

下面的错误。

Cannot set property 'Authorization' of undefined

是否有任何解决方案可以发送带有“授权”标头的“GET”请求? 谢谢

【问题讨论】:

这是关于这个主题的另一个问题的一个很好的答案:***.com/questions/25771062/… 【参考方案1】:

我认为您在获取请求中以错误的方式使用了参数。尝试像这样切换参数和标题:

angular.module('mabidualApp')
  .factory('User', function ($resource, config) 

    return $resource(config.API+':url/:id', 
        url: '@url', id: '@id'
    ,  //parameters default
      auth: 
        method: 'POST',
        params: 
            url: "token",
        
    ,
      get_auth: 
        method: 'GET',
        params: 
          url:"users",
          id:'me'
        ,
        headers: 'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w'
      
);

我更改了您的自定义获取请求,因为 'get' 可能已经由 angular 定义,但我不确定:

$httpProvider.defaults.headers.get_auth['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w';

此外,您确定不需要任何其他标题吗?

【讨论】:

谢谢,但是切换参数和标题会带来相同的结果。我想设置'GET'标头而不是自定义请求标头..

以上是关于angular.js $resources 设置授权头的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 angular.js-resource 启用 cors 请求

Angular.js $resource 与 ASP.Net webapi?

angular $resource delete 不会将正文发送到 express.js 服务器

oracle创建用户后需要授哪些权限

Angular JS将带有$resource的数组数据发送到.NET API

oracle创建用户后需要授哪些权限