如何处理角度为2的302

时间:2016-06-22 11:20:13

标签: javascript ajax http angular

我收到状态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);
}

要求我想在重定向网址重定向上发送另一个帖子。 如何获取重定向网址。

需要帮助。

1 个答案:

答案 0 :(得分:3)

我知道的答案很晚,但是对于任何绊倒这个的人来说。

简短的回答是,您不能在浏览器处理302本身时,并且不会对此有所了解。你可以做的是设置一个拦截器样式类来监视正在发生的事情。

谷歌对于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....
}

我还可以看到提供的标题,而不是application / json我突然转到text / html。嗯,这是我可以检查的另一个变化:

if (response.url.contains('my-auth string') && response.headers['content-type'] == 'text/html') {
   redirect....
}

您可以检查其他参数,但这些参数足以检测到我的重定向。不可否认,这是关于被重定向到登录而不是另一个例子,希望你得到足够的不同变化检查,以确定你是否有302。