1

我也正在從一個服務調用AngularJS成功401攔截仍然拋出401

的問題是,401仍顯示爲一個JavaScript收到其重定向到一個登錄頁面上的401響應工作角度攔截服務Google Chrome控制檯中的錯誤

GET http://domain:port/api/url 401 (Unauthorized) ... angular.js:9658 

這是Chrome的一項功能,還是我需要以其他方式處理?

工作攔截服務的內容如下:提前

var _request = function (config) { 

    /*insert auth headers*/ 
} 

var _responseError = function (rejection) { 

    if (rejection.status === 401) { 

     $location.path('/login'); 
    } 

    return $q.reject(rejection); 
} 

var _response = function (response) { 
    return response || $q.when(response); 
} 

感謝所有幫助

+0

您可以請發佈使用您在上面發佈的功能的代碼。 – 2015-02-06 23:25:35

回答

1

看來你誤會[角攔截]的機制。

對於全球錯誤處理,認證,或任何種類的請求 同步或異步預處理或 後處理的反應的目的,理想的是能夠攔截 請求它們交給前服務器和響應之前 它們被移交給發起這些 請求的應用程序代碼

攔截器的目的是在將應用程序移交給應用程序代碼之前進行預處理,也就是說,它在瀏覽器和您的個人代碼之間。由於服務器響應401錯誤,瀏覽器肯定會將其視爲401未授權,將其標記爲紅色並將日誌寫入console面板。

然後Angular Interceptor接收來自瀏覽器的http響應數據並按照您的要求對其進行預處理。完成所有這些後,您的$http調用將收到最終響應對象。

所以是的,這是瀏覽器的一個功能。如果您認爲錯誤消息很煩人,而您又不希望用戶看到它,則可以將響應代碼重寫爲其他人(例如0,600,與所有HTTP響應代碼不衝突的任何內容),然後在攔截器中處理它們。這是一個竅門。

+0

非常感謝......完整回答 – Alex 2015-02-27 09:29:03