Angularjs Angular JS-向所有GET/POST请求添加自定义头

Angularjs Angular JS-向所有GET/POST请求添加自定义头,angularjs,http-headers,authorization,request-headers,angular-http-interceptors,Angularjs,Http Headers,Authorization,Request Headers,Angular Http Interceptors,我正在尝试使用拦截器向所有GET/POST请求添加“Authorization”头。 这是拦截器: myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) { return { request: function ($config) { $config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;

我正在尝试使用拦截器向所有GET/POST请求添加“Authorization”头。 这是拦截器:

myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) {
  return {
    request: function ($config) {
        $config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;
        return $config;
    }
  };
}]);
在myApp.config部分的主模块中使用拦截器,如下所示:

$httpProvider.interceptors.push('httpRequestInterceptor');
由于某些原因,我在网络选项卡中看不到授权标题(我使用的是Chrome),并且它没有到达服务器,我也没有收到任何错误。 我的应用程序中的GET/POST请求发送到不在我的域中的远程服务器

知道我做错了什么吗

解决方案:
我发现问题出在服务器端——显然,如果我在对*的响应中设置了Access Control Allow标头,它就不起作用,但是如果我按字面意思指定标头,它就可以正常工作。

我认为您应该将其改为

 myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) {
    var injector = {
        request: function (config) {
               config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey;
               return config;
        }
    };
   return injector;
    } ]);
尝试这样做

您可以使用:

myApp.run([
  '$http', '$rootScope',
  function($http, $rootScope) {
    $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.apiKey;
  }
]);

您始终可以使用
$httpProvider
命令angular添加标题,如下所示:

myApp.config(['$httpProvider','$rootScope', function ($httpProvider, $rootScope) {
    $httpProvider.defaults.headers.common['Authorization'] = 'Basic' + $rootScope.apiKey;
}]);
这将向所有请求添加标头。对于get和post,您可以设置:
$httpProvider.defaults.headers.get['Authorization']=''
$httpProvider.defaults.headers.post['Authorization']=''

如果您不想将头添加到所有请求中,请不要使用
$httpProvider.defaults.headers.common['Authorization']

问题出在服务器端-显然,在对*的响应中设置访问控制允许头不起作用,但按我的需要指定头(访问控制允许标头:授权)工作正常。

也尝试过,但不起作用。另外,请确保我已在响应上设置了Access Control Allow Headers标题,并将其设置为*.user1531186。是否可以尝试创建一个小提琴来重现该问题?我找到了一个解决方案,请参阅编辑过的问题。谢谢帮助。@user1531186您尝试过我编辑过的解决方案吗?我找到了一个答案lution,查看编辑后的问题。感谢您的帮助。奇怪的是,我在当前的应用程序中使用了类似的东西,并且可以正常工作。下面是一个JSFIDLE:我可以在发送标题的chrome工具中看到:访问控制请求标题:accept,Authorization何时设置$rootScope.apiKey?我找到了一个解决方案,请参阅编辑后的问题谢谢你的帮助。很高兴知道你发现了问题