解决此问题的一个好方法是创建一个 authInterceptor 工厂,负责将标头添加到所有 $http 请求中:
angular.module("your-app").factory('authInterceptor', [
"$q", "$window", "$location", "session", function($q, $window, $location, session) {
return {
request: function(config) {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + session.get('token'); // add your token from your service or whatever
return config;
},
response: function(response) {
return response || $q.when(response);
},
responseError: function(rejection) {
// your error handler
}
};
}
]);
然后在你的 app.run 中:
// send auth token with requests
$httpProvider.interceptors.push('authInterceptor');
现在所有使用 $http (或 $resource )发出的请求都将发送授权标头。
这样做而不是更改 $http.defaults 意味着您可以更好地控制请求和响应,而且您也可以使用自定义错误处理程序或使用您想要确定是否应该发送身份验证令牌的任何逻辑。