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

时间:2015-08-07 09:26:21

标签: ajax angularjs csrf

jQuery提供了一种简单有效的方法来为其所有AJAX请求设置公共标头。

那就是:

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

如何在AngularJS中进行这样的全局设置

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

您可以在应用的配置中设置标头,例如Milad说的,或者您可以使用 http拦截器概念。

每当启动http调用时都会调用Interceptor,拦截器将在实际调用进程之前运行。

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

并将其添加到app config:

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