在我的角度应用程序中,我使用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 回答
你的方法是错的 . 您不需要在每个请求中附加JWT .
如果在您成功登录的后端登录路由上,您的服务器以“Set-Cookie”标头响应,它将自动在所有后续请求中设置JWT标头,客户端不需要设置cookie .
例如
要在用户向服务器发出注销请求时删除它,服务器应响应:
这也有利于使其成为仅提高安全性的http .
见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie