处理http 302重定向响应

gmc*_*gmc 7 javascript ajax xmlhttprequest angular

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

  1. 我的前端(Angular)向A发出http请求(我拦截传出请求)
  2. 答复 302 Location: B
  3. 我的前端302用空字段拦截响应,然后转到B.
  4. 在这里,我想拦截来自B的回应

这是我的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;
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 1

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

{observe:"response"} 是 Angular 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)
  }
Run Code Online (Sandbox Code Playgroud)