Javascript 角响应拦截器不';t重定向

Javascript 角响应拦截器不';t重定向,javascript,angularjs,Javascript,Angularjs,我正在设置一个全局响应拦截器来处理错误重定向。问题是页面没有使用ErrorCtrl,地址栏也没有反映位置已更改。这是工厂: famaApp.factory('responseObserver', function responseObserver($q, $location) { return { 'responseError': function(errorResponse) { $location.path('/error/' + errorR

我正在设置一个全局响应拦截器来处理错误重定向。问题是页面没有使用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”拒绝响应时执行

移除

return $q.reject(response);

解决了问题。

为什么您的服务使用回调?我已经更新了我的问题-我按照您的建议做了,得到了相同的结果。
return $q.reject(response);