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(..)'''时发现破坏的拦截器:配置对象在拒绝中没有提供''。 –