Cookie域包含Dot?

时间:2013-12-13 15:45:40

标签: java javascript html gwt cookies

我使用GWT的Cookies类生成cookie。

当我使用以下

Cookies.setCookie(LOGIN_COOKIE_NAME, value, expires);
一切正常。检查浏览器中的cookie会导致mydomay.com正常运行。

但是,当我使用以下内容时:

String path = "/"
String domain = "mydomain.com"
Cookies.setCookie(LOGIN_COOKIE_NAME, value, expires, domain, path, secure);

当我在浏览器中查看时,我可以在域前看到一个点:

.mydomain.com

点来自哪里?

事实证明,如果给出.mydomain.com,Cookies.removeCookie(LOGIN_COOKIE_NAME)对我不起作用。为什么在前面有一个点时不能删除这个cookie?

4 个答案:

答案 0 :(得分:10)

点表示Cookie也适用于mydomain.com的任何子域,例如example.mydomain.com。可以将其视为*.mydomain.com,其中*是通配符。

您可以在此处找到一个非常相似的问题:What is the cookie dot rule?

答案 1 :(得分:2)

如果您在创建域时通过了域,那么当您清除Cookie时,您需要传递相同的域(例如How do you remove a Cookie in a Java Servlet?);但是,这里没有API允许这样做。

这听起来很像报告为RFE: Provide a Cookies.removeCookie(name, domain, path) method的错误:

  

在服务器上为给定的URL以及域名和路径设置cookie   作为返回结果的一部分,在cookie上显式设置。   Cookies.remove(name)和Cookies.remove(名称,路径)不会删除   FF3.0.14上的cookie。 (基于路径的删除适用于IE 6)。

该问题中建议的解决方法是修补GWT Cookies类。

答案 2 :(得分:1)

这里的Dot表示cookie也适用于子域,例如abcd.mydomain.com。 IT非常相似,你可以在你的域名中添加一个完全不同的网站,比如说注册段在不同的子域中分开,所以一般来说它可以用通配符说* .mydomain.com。这被称为Cookie点规则。请参阅IETF Page了解相同内容。您也可以让同一个cookie引用多个令牌值。

答案 3 :(得分:1)

您必须将过期日期设置为现在,以便Cookie过期到期。

Cookies.setCookie(COOKIE_NAME, "", new Date(), domain, path, false);