我有一个拦截器,接收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路由器。

最佳答案

尝试删除$ q.reject(response)。

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

关于javascript - Angular ErrorInterceptor触发两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32441621/

10-09 07:29