如何为 AngularJS 中的所有 AJAX 请求设置 header

How to setup header for all AJAX requests in AngularJS

jQuery 有一种简单有效的方法来为其所有 AJAX 请求设置通用 header。

那就是:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

如何在 AngularJS

中进行这样的全局设置

可以通过配置应用模块为整个应用程序设置header。

var app = angular.module("auth", []);
// Configure auth app
app.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.defaults.headers.common['Accept'] = 'application/json, text/javascript';
    $httpProvider.defaults.headers.common['Content-Type'] = 'application/json; charset=utf-8';
    $httpProvider.defaults.headers.common['X-CSRF-TOKEN'] =     $('meta[name="csrf-token"]').attr('content')
}]);
// Parent controller
app.controller("auth", function ($scope) {
    // Your $http requests will have the common information above
});

您可以像 Milad 所说的那样在您的应用程序配置中设置 headers,或者您可以使用 http 拦截器 概念。

每当启动 http 调用时都会调用拦截器,并且拦截器会在实际调用过程之前 运行。

angular.module('yourmodule').factory('httpRequestInterceptor',
['$rootScope', function($rootScope)
 {
  return {
   request: function($config) {
    if( $rootScope.user.loginticket )
    {
     $config.headers['your-auth-ticket'] = $rootScope.user.loginticket;
    }
  return $config;
  }
 };
}]);

并将其添加到应用程序配置中:

$httpProvider.interceptors.push('httpRequestInterceptor');