删除Cookie问题

时间:2011-11-08 11:09:08

标签: gwt cookies token

当用户登录www.example.com时,我有一个cookie保存令牌,然后根据他们使用的设备将其重定向到example.com/desktop或example.com/mobile。当他们退出桌面应用程序时,我将cookie替换为null,然后在GWT中调用remove cookie并将其重定向到www.example.com,但cookie仍然存在。我在这里做错了吗?我以前没有使用过很多cookie,所以我对此有点新鲜。

2 个答案:

答案 0 :(得分:12)

由于Cookie是在另一个路径设置的,因此您必须使用Cookies.removeCookie("cookieName", "/")/是您示例中使用的路径)而不是Cookies.removeCookie("cookieName")

这是因为没有指定路径,路径默认为当前页面之一(参见document.cookie)。

所以,你试图在path = / desktop中删除cookie,而它实际上是在path = /,因此删除失败。
请记住,您可以拥有两个名称相同但路径不同的Cookie;所以你可以在path=/ 一个_ cookieName path=/desktop处拥有 cookieName 。删除path=/处的Cookie不会删除path=/desktop处的Cookie,相反,删除path=/desktop处的Cookie不会删除path=/处的Cookie。 作为旁注:访问/desktop时,浏览器会发送两个cookie,这些cookie可能具有不同的值。

简而言之,因为您将Cookie设置为/,所以请记住始终将/作为路径传递到任何地方,或者您可以创建新的Cookie而不是修改现有的Cookie,或者不能删除它(你现在正在经历)。

另见Cookies.removeCookie(String,String)

答案 1 :(得分:3)

如果您还需要非默认域名

public static native void removeCookie(String name, String path, String domain) /*-{
    $doc.cookie = name + "=" + ((path) ? ";path=" + path : "")
            + ((domain) ? ";domain=" + domain : "")
            + ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
}-*/;