javascript-如何处理角度2中的302

我收到状态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本身,并且不会透露任何有关角度的信息.您可以做的是设置一个拦截器样式类,该类监视正在发生的事情.

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....
}

我还可以在提供的标题上看到,我突然转到了text / html而不是application / json.嗯,这是我可以检查的另一项更改:

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

您可能还有其他参数可以检查,但是这些参数足以检测到我的重定向.诚然,这是与重定向登录有关的,而不是另一个示例,希望您获得足够的不同更改检查以决定是否有302.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...