我收到状态302错误
但是在尝试记录catch中的错误时,我得到200
post(url, data, successCallBack, errCallback) {
return this.http.post(apiDomain + url, JSON.stringify(data), {
headers: this.headers
}).catch(this.handleError).subscribe(
(res) => {
successCallBack(res.json());
},
(err) => {
errCallback(err);
}
);
}
private handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status;
console.log(error.status); // log is 200
console.log(error)
console.error(errMsg);
return Observable.throw(errMsg);
}
要求我要发送另一个有关重定向URL重定向的帖子。
如何获取重定向URL。
需要帮忙。
最佳答案
我知道最新答案,但是对于任何绊脚石的人。
简短的答案是您不能,因为浏览器会处理302本身,并且不会透露任何有关 Angular 信息。您可以做的是设置一个监听器样式类,以监视正在发生的事情。
Google用于angular2 http拦截器或类似的拦截器,它比上面的示例更强大,并且可以监视每个XHR连接。一个例子在这里:
https://www.illucit.com/blog/2016/03/angular2-http-authentication-interceptor/
现在,这允许任何连接都将通过您的拦截器进行。由于我们将无法监控302,因此我们必须考虑可能发生的情况。例如,在我的示例中,请求突然将URL更改为带有我的auth的内容。
太好了,所以我的第一位伪代码将是:
if (response.url.contains('my-auth string')) {
redirect....
}
我还可以在 header 上看到,我突然转到text/html而不是application/json了。嗯,这是我可以检查的另一项更改:
if (response.url.contains('my-auth string') && response.headers['content-type'] == 'text/html') {
redirect....
}
您可能还有其他可以检查的参数,但是这些参数足以检测到我的重定向。诚然,这是与重定向到登录有关的,而不是另一个示例,希望您得到足够的不同更改检查以决定是否有302。
关于javascript - 如何在 Angular 2中处理302,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37966519/