处理http 302重定向响应

时间:2018-02-05 09:01:59

标签: javascript ajax angular xmlhttprequest

我知道http 302响应是由浏览器直接处理的,因此您无法访问源代码中的任何请求属性。但我想知道是否有任何方法可以拦截302重定向响应。让我解释一下自己:

  1. 我的前端(Angular)向A发出http请求(我拦截传出请求)
  2. A以302 Location: B
  3. 回复
  4. 我的前端用空字段截取302响应,然后转到B
  5. 我想拦截来自B的回复
  6. 这是我的Angular http拦截器代码:

    @Injectable()
    export class CasInterceptor implements HttpInterceptor {
      intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        console.log('->Interceptor');
        console.log(req);
        return next.handle(req).map((event: HttpEvent<any>) => {
            const response = event as HttpResponseBase;
            console.log('<-Interceptor');
            console.log(response);
            return event;
        });
      }
    }
    

1 个答案:

答案 0 :(得分:0)

您应该从http响应中获得完整的标头。

{observe:“ response”}是有角度的http客户端的魔术参数。 所以尝试这个

this.http
.get<any>(requestURL,{observe:"response"})
.subscribe(
  data => {
    console.log(data.header); //you will see full header here
    console.log(data.url); // you can see redirect url from backend and handle it whatever you want
  },
  err => {
     console.log(err)
  }