删除cookie spring boot

esyap4oy  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(788)

我在cookie中传递一些登录时的信息,这些信息需要在注销时删除。对于传递和删除cookie,我使用httpservletresponse。cookie在客户端中可见,但不会被删除。
添加cookie:

Cookie cookie = new Cookie(name, value);
cookie.setHttpOnly(true);
cookie.setSecure(false);
cookie.setMaxAge(age);
cookie.setPath("/"); 
cookie.setDomain("localhost");
response.addCookie(cookie);

删除:

Cookie cookie = new Cookie(name, null);
cookie.setHttpOnly(true);
cookie.setSecure(false);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setDomain("localhost");
response.addCookie(cookie);

传递的名称是相同的,我对两者都使用常量变量,所以这不是问题所在。我读了很多问题,但是所有的问题都是用setmaxage设置为0来解决的,在我的例子中,这个设置是正确的。我不知道该怎么办。

ycggw6v2

ycggw6v21#

所以我找到了一个解决方案,我想把它贴在这里,以帮助其他有需要的开发人员。
问题不在我的后端,cookie设置正确,并且按照文档中的指定被删除。但事实是cookie是从一个不需要身份验证的端点设置的,我正试图从一个需要身份验证的端点删除它。
你可以推断,问题出在我的前端和cors请求上。我必须添加一个拦截器,为每个请求添加{withcredentials:true},这样就可以从服务器发送和接受cookies。

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
req = req.clone({
  withCredentials: true
});
return next.handle(req);
}

谢谢!

相关问题