angular.js $resources 设置授权标头

问题描述 投票:0回答:1

js

我想做的是向服务器发出 REST API REQUEST。

请求应为“GET”方法并包含“授权”标头。

我与 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

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

angularjs http-headers preflight
1个回答
0
投票

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

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

我更改了您的自定义获取请求,因为“获取”可能已经由角度定义,但我不确定:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.