一尘不染

AngularJS的全局Ajax错误处理程序

angularjs

当我的网站是100%jQuery时,我曾经这样做:

$.ajaxSetup({
    global: true,
    error: function(xhr, status, err) {
        if (xhr.status == 401) {
           window.location = "./index.html";
        }
    }
});

为401错误设置全局处理程序。现在,我将angularjs与$resource$http一起使用,以向服务器发送(REST)请求。有什么办法可以类似地用角度设置全局错误处理程序吗?


阅读 186

收藏
2020-07-04

共1个答案

一尘不染

我还在建立一个带有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);
2020-07-04