首页 文章

在观察响应时,仅从Http拦截器返回响应体

提问于
浏览
1

在我的角度应用程序中,我使用Http拦截器在每个请求中附加JWT . 我还需要在res.headers.get(“authority”)代码的帮助下从响应头读取一些自定义数据 . 我在向服务器发送请求时打开了{observe:'response'},这样我也可以获得头信息 .

我只需要从拦截器返回响应主体到service / component,下面是示例拦截器代码片段:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
//debugger
return next.handle(req).map((event: HttpEvent<any>) => {
  if (event instanceof HttpResponse) {
    //return event.body;
    if (!localStorage.getItem("LoggedInUserRole"))
      this.authenticationService.setLoggedInUserRole(event.headers.get("authority"));
    return event;
    //debugger
  }
});

}

1 回答

  • 0

    你的方法是错的 . 您不需要在每个请求中附加JWT .

    如果在您成功登录的后端登录路由上,您的服务器以“Set-Cookie”标头响应,它将自动在所有后续请求中设置JWT标头,客户端不需要设置cookie .

    例如

    Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
    

    要在用户向服务器发出注销请求时删除它,服务器应响应:

    Set-Cookie: <cookie-name>=''; HttpOnly
    

    这也有利于使其成为仅提高安全性的http .

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

相关问题