我试图在SAML安全后端上创建一个Angular 1应用。 当我在未经过身份验证的情况下发出REST请求时,我会收到状态为200的响应和一个将向IDP提交页面的HTML页面。
我不希望这200个响应在我的服务中达到我的$http(...).then(function(...){})
方法。
所以我想在HTTP拦截器中将200更改为401状态代码。
这可能吗?
欢迎任何替代方案。
答案 0 :(得分:1)
好的,我找到了:
在响应方法中,您可以使用此语句将状态设置为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);