我在Angular 2中有这个功能,它在正常情况下运行良好:
private callGetUserService(url: string, id: string): Observable<any> {
return this.authHttp.get(url + id)
.map(res => {
return this.extractData(res);
})
.catch((err) => {
console.log('Error getting account: ' + JSON.stringify(err));
return Observable.of(err);
});
}
当我从服务器强制执行401响应时,catch(err)总是返回err.status = 0和err.ok = false。我完全失去了,有人可以帮忙吗?
答案 0 :(得分:0)
由于提供的信息有限,我可以提供的最佳帮助是猜测这可能与CORS失败的飞行前请求有关,该请求仅在您强制执行401响应时发生。
主要是因为:
CORS Error Response Status = 0
似乎每当CORS请求失败时,返回的响应始终为0.
AngularJS - $http get returns error with status 0?
您有HTTP访问控制(CORS)问题。
另请注意,解决HTTP相关问题的最佳方法是查看正在执行的实际HTTP请求。在浏览器中,您可以通过使用开发人员工具快速实现这一点,这将是我的建议。检查原始HTTP请求,看看可能导致您遇到问题的不同情况。