当我的网站是100%jQuery时,我曾经这样做:
$.ajaxSetup({ global: true, error: function(xhr, status, err) { if (xhr.status == 401) { window.location = "./index.html"; } } });
为401错误设置全局处理程序。现在,我将angularjs与$resource和$http一起使用,以向服务器发送(REST)请求。有什么办法可以类似地用角度设置全局错误处理程序吗?
$resource
$http
我还在建立一个带有angular的网站,并且遇到了同样的障碍来处理全局401。当我遇到此博客文章时,我最终使用了HTTP拦截器。也许您会发现它和我一样有用。
“基于AngularJS(或类似)的应用程序中的身份验证。” , espeo软件
编辑:最终解决方案
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives'], function ($routeProvider, $locationProvider, $httpProvider) { var interceptor = ['$rootScope', '$q', function (scope, $q) { function success(response) { return response; } function error(response) { var status = response.status; if (status == 401) { window.location = "./index.html"; return; } // otherwise return $q.reject(response); } return function (promise) { return promise.then(success, error); } }]; $httpProvider.responseInterceptors.push(interceptor);