2015-09-07 74 views
0

我有一個攔截器,收到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

回答

2

嘗試刪除$ q.reject(響應)。

如果響應返回401會自動拒絕

+0

謝謝你的工作。請你更詳細地解釋錯誤是如何處理的。角度記錄是可怕的。 – TotalWar

+0

每次響應返回一個錯誤(4xx,5xx)時,它會自動拒絕,並且您可以使用.catch(function()) EX: $ http.get('/ Home/GetSum')捕獲錯誤。 (函數(響應){alert(response); })。catch(function(error){console.log(error)}); – Oxenarf