この問題を解決する優れた方法は、すべての $http リクエストにヘッダーを追加する責任を持つ authInterceptor ファクトリを作成することです。
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 については $resource) で作成されたすべてのリクエストが認証ヘッダーと共に送信されます。
$http.defaults を変更する代わりにこのようにすることは、リクエストとレスポンスをより細かく制御できることを意味します。また、カスタム エラー ハンドラを使用したり、認証トークンを送信するかどうかを決定するロジックを使用したりすることもできます。