0
我正在嘗試在SAML安全後端上創建一個Angular 1應用程序。 當我在未經過身份驗證的情況下發出REST請求時,我收到狀態爲200的響應和一個將頁面提交給IDP的HTML頁面。
我不希望這200響應在我的服務中達到我的$http(...).then(function(...){})
方法。 所以我想在200攔截器中將200更改爲401狀態碼。
這可能嗎?
歡迎任何替代方案。
我正在嘗試在SAML安全後端上創建一個Angular 1應用程序。 當我在未經過身份驗證的情況下發出REST請求時,我收到狀態爲200的響應和一個將頁面提交給IDP的HTML頁面。
我不希望這200響應在我的服務中達到我的$http(...).then(function(...){})
方法。 所以我想在200攔截器中將200更改爲401狀態碼。
這可能嗎?
歡迎任何替代方案。
好吧,我發現:
在響應方法,你可以使用此語句將狀態設置爲401:
return $q.reject({status: 401, error: 'UNAUTHORIZED'});
的完整代碼樣本:
interceptor = function ($q, $location, $rootScope) {
return {
request: function (config) {
...
return config || $q.when(config);
},
requestError: function (rejection) {
return $q.reject(rejection);
},
response: function (response) {
if (response.status === 200 &&
response.headers()['content-type']==='text/html' &&
response.data.startsWith("<HTML><HEAD><TITLE>SAML HTTP Post Binding</TITLE>")) {
//WE HAVE A SAML AUTH REQUEST
return $q.reject({status: 401, error: 'UNAUTHORIZED'});
}
return response;
},
responseError: function (rejection) {
...
}
};
};
$httpProvider.interceptors.push(interceptor);
我得到這個錯誤'''調用'''$ q.reject(..)'''時發現破壞的攔截器:配置對象在拒絕中沒有提供''。 –