当用户登录 www.example.com 时,我有一个 cookie 保存 token ,然后根据他们使用的设备将他们重定向到 example.com/desktop 或 example.com/mobile。当他们注销桌面应用程序时,我将 cookie 替换为 null,然后在 GWT 中调用 remove cookie 并将它们重定向到 www.example.com,但 cookie 仍然存在。我在这里做错了吗?我以前很少使用 cookie,所以我对此有点陌生。
最佳答案
因为 cookie 被设置在另一个路径,你必须使用 Cookies.removeCookie("cookieName", "/")
( /
是您的示例中使用的路径)而不是 Cookies.removeCookie("cookieName")
.
这是因为没有指定路径,路径默认为当前页面之一(见 document.cookie
)。
因此,您尝试删除 path=/desktop 中的 cookie,而它实际上位于 path=/,因此删除失败。
请记住,您可以拥有两个名称相同但路径不同的 cookie;所以你可以在 path=/
有一个 cookieName和 path=/desktop
处的 _cookieName .删除 path=/
处的 cookie不会删除 path=/desktop
处的那个,反之,删除 path=/desktop
处的那个不会删除 path=/
处的那个.
附带说明:访问 /desktop
时,浏览器将发送两个 cookie,它们可能具有不同的值。
简而言之,因为您将 cookie 设置为 /
,记得一定要通过/
作为路径,无处不在,或者您可以创建一个新的cookie而不是修改现有的cookie,或者无法删除它(您现在正在经历)。
另见 Cookies.removeCookie(String,String)
关于gwt - 删除 Cookie 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8049467/