Angularjs angular.js$resources设置授权标头

Angularjs angular.js$resources设置授权标头,angularjs,http-headers,preflight,Angularjs,Http Headers,Preflight,js 我试图做的是向服务器发出RESTAPI请求 请求应该是“GET”方法,并包含“Authorization”头 我与REST服务器通信的工厂代码如下 "严格使用", angular.module('mabidualApp') .factory('User', function ($resource, config) { return $resource(config.API+':url/:id', { url: '@url', id: '@id' },

js

我试图做的是向服务器发出RESTAPI请求

请求应该是“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'} ,
$httpProvider.defaults.headers.get['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w';
如果我添加标题,方法将更改为“选项”而不是“获取”。我发现它是关于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';
第二个问题在这里

headers:{'Authorization':'Bearer oLDMYrJD0Qg15Nhv7N-H6w'} ,
$httpProvider.defaults.headers.get['Authorization'] ='Bearer oLDMYrJD0Qg15Nhv7N-H6w';
它会产生下面的错误

Cannot set property 'Authorization' of undefined
是否有任何解决方案可以发送带有“授权”标题的“GET”请求?
谢谢

我认为您在get请求中以错误的方式使用了参数。尝试切换参数和标题,如下所示:

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请求,因为“get”可能已经由angular定义,但我不确定:

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

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

谢谢,但切换参数和标题会得到相同的结果。我想设置“GET”头而不是自定义请求头。下面是关于这个主题的另一个问题的好答案: