我正在设置一个全局响应拦截器来处理错误的重定向。问题在于页面未使用ErrorCtrl,地址栏也未显示位置已更改。这是工厂:

famaApp.factory('responseObserver', function responseObserver($q, $location) {
    return {
        'responseError': function(errorResponse) {
            $location.path('/error/' + errorResponse.status);
            return $q.reject(errorResponse);
        }
    };
});


它被推送到app.config中的$ httpProvider的拦截器中:

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


我检查了一种特定服务中的路径,该服务的调用方式如下:

AuthenticationService.authenticate($scope.credentials, function(success) {
    if (success) {
        ...
    } else {
        console.log($location.url());
        ...
    }
});


并且$ location.url()是正确的,/ error / 502。知道我在做什么错吗?

编辑:

此后,我更新了代码,但仍然无法正常工作。这是我的新配置:

app.config(['$routeProvider', '$httpProvider',
        function($routeProvider, $httpProvider) {
    $httpProvider.interceptors.push(function ($q, $location) {
        return {
            responseError: function (response) {
                $location.path('/error/' + response.status);
                return $q.reject(response);
            }
        };
    });
    ...
}]);


不幸的是,问题仍然存在。

最佳答案

尝试直接在应用模块配置中的拦截器中添加“ responseError”。这个对我有用!

var app = angular.module('yourAppName', []);
app.config(function ($httpProvider) {
    $httpProvider.interceptors.push(function ($q, $location) {
        return {
            responseError: function (response) {
                $location.path('/error/' + response.status);
                return $q.reject(response);
            }
        }
    }
});


不必要验证响应。

AuthenticationService.authenticate($scope.credentials, function(success) {
    if (success) {
        ...
    } else {
        console.log($location.url());
        ...
    }
});


第三个参数是回调错误。当响应被“ $ q.reject”拒绝时执行。

AuthenticationService.authenticate($scope.credentials, function (response) {
    /**
     * Success response
     */
}, function (response) {
    /**
     * Error response
     */
});

关于javascript - Angular 响应拦截器不重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33108607/

10-12 15:53