Angular ErrorInterceptor发射两次

时间:2015-09-07 15:03:30

标签: javascript angularjs

我有一个拦截器接收401(未经授权)。

一切看起来都不错,但是当我做一个请求时,拦截器会被触发两次。非常奇怪。

App.factory('HttpResponseInterceptor', ['$q', '$injector', '$location','ModalService', function ($q, $injector, $location, ModalService) {
    return {        
        responseError: function (response) {

            if (response.status === 401) {

                console.log("401");

            }

            return $q.reject(response);
        }
    }
}]);

App.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.interceptors.push('HttpResponseInterceptor');
}]);

我进入了chrome调试控制台" 2 401",意思是它被解雇了两次

这是触发网络调用的代码。它只触发一次,我通过小提琴检查。

控制器:

angular.module('App')
.controller('HomeCtrl',['$scope','$http', function ($scope, $http) {

    $scope.Open = function () {
        $http.get('/Home/GetSum').
               then(function (response) {
                   alert(response);
               });
    }

}])

和视图:

<button ng-controller="HomeCtrl" ng-click="Open()">OPEN</button>

请注意,我正在使用Ui路由器。

1 个答案:

答案 0 :(得分:2)

尝试删除$ q.reject(响应)。

如果响应返回401,则会自动拒绝