如何仅删除为.domain.com设置的cookie?

时间:2010-09-17 13:31:42

标签: php javascript cookies

有没有办法判断是否为.domain.com而不是www.domain.com设置了Cookie?客户端JS或服务器端PHP的解决方案都可以。

我想要删除为.domain.com设置的任何Cookie,因为我最近为静态内容设置了static.domain.com,并且我不希望将Cookie发送到静态子域。我已将网站设置的所有Cookie转换为使用www.domain.com,但现有用户将为.domain.com设置旧Cookie。

3 个答案:

答案 0 :(得分:2)

您可以更改Cookie名称 - 如果检测到旧的Cookie名称,请将其删除,然后将其重置为完整域名的新名称。

答案 1 :(得分:2)

您需要做的是,在一段时间内,故意从.domain.com删除Cookie并通过发送www.domain.com标题的组合将其添加到Set-Cookie:< / p>

Set-Cookie: cookieName=; expires=Wed, 1-Sep-2010 12:34:56 GMT; path=/; domain=.domain.com
Set-Cookie: cookieName=CookieValue; expires=Tue, 1-Sep-2020 12:34:56 GMT; path=/; domain=www.domain.com

请注意,第一个日期是过去的日期。第二个日期是未来十年。这将删除cookie的.domain.com版本(如果在那里)并将其添加(如果需要)到www.domain.com

在某些时候,如果您确定每个用户(或者足够接近您的用户)至少访问过您的网站并将这对标头发送给他们,您可以停止这样做。

请注意,如果您的Cookie是在JavaScript中设置的(例如Google Analytics),则不需要第二行Set-Cookie

答案 2 :(得分:1)

似乎Javascript和PHP都无法访问有关cookie的域信息。我建议删除所有旧cookie。也许是一个计划,每个拥有新cookie的人都会获得额外的属性集,如果没有找到,则所有cookie都会被删除。