在观察响应时仅从 Http 侦听器返回响应正文



在我的角度应用程序中,我使用 Http 拦截器在每个请求中附加 JWT。我还需要从响应标头中读取一些自定义数据,我在res.headers.get("authority"(代码的帮助下读取这些数据。我在将请求发送到服务器时打开了{观察:"响应"},以便我也可以获取标头信息。

我只需要从拦截器将响应正文返回到服务/组件,下面是示例拦截器代码片段:

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
}
});

}

你的方法错了。无需在每个请求中附加 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

相关内容

  • 没有找到相关文章