角度ErrorInterceptor发射两次

问题描述:

我有一个拦截器,收到401(未经授权)。角度ErrorInterceptor发射两次

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

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'); 
}]); 

我得到的铬调试控制台“2401”,这意味着它被解雇了两次

这里是触发该网络call.Its只触发一次,我通过拨弄检查它的代码。

控制器:

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

有可能请求被罚两次,得到了同样的结果两次。我们可以看到提出请求的代码吗?或尝试添加一些日志语句到那里,看看是否只运行一次 – electrometro

+0

我有一个控制台打开(小提琴),它的调用只有一次。我会发布代码,它的一个简单的按钮点击发布到我的端点。 – TotalWar

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

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

+0

谢谢你的工作。请你更详细地解释错误是如何处理的。角度记录是可怕的。 – TotalWar

+0

每次响应返回一个错误(4xx,5xx)时,它会自动拒绝,并且您可以使用.catch(function()) EX: $ http.get('/ Home/GetSum')捕获错误。 (函数(响应){alert(response); })。catch(function(error){console.log(error)}); – Oxenarf