是否可以删除子域 cookie?
Posted
技术标签:
【中文标题】是否可以删除子域 cookie?【英文标题】:Is it possible to delete subdomain cookies? 【发布时间】:2010-09-12 03:32:12 【问题描述】:如果为子域 metric.foo.com 设置了 cookie,我是否可以在请求 www.foo.com 时删除 metric.foo.com cookie?浏览器(至少是 Firefox)似乎忽略了域为 metric.foo.com 的 Set-Cookie。
【问题讨论】:
【参考方案1】:Cookie 只能由创建它们的域读取,因此如果 cookie 是在 metric.foo.com 创建的,则必须在创建它的同一域下将其删除。这包括子域。
如果您需要从 metric.foo.com 删除 cookie,但目前正在 www.foo.com 上运行页面,则您将无法这样做。
为此,您需要从 metric.foo.com 加载页面,或在 foo.com 下创建 cookie,以便可以在任何子域下访问它。或者使用这个:
Response.cookies("mycookie").domain = ".foo.com"
...在创建它时,以及在你删除它之前。
..未经测试 - 应该可以工作。
【讨论】:
澄清一下,cookie 可由创建域或任何子域写入。然后它们可以被 cookie 的域和它的任何子域读取。这在答案中有所涵盖,但第一句话不清楚。【参考方案2】:我对子域也有同样的问题。由于某种原因,首先从请求中获取 cookie 不起作用。相反,我最终只是创建了一个具有相同 cookie 名称和过去到期日期的新 cookie。效果很好:
void DeleteSubdomainCookie(HttpResponse 响应,字符串名称) HttpCookie cookie = 新的 HttpCookie(名称); cookie.Expires = DateTime.Now.AddMonths(-1); cookie.Domain = ".yourdomain.com"; response.Cookies.Add(cookie);【讨论】:
以上是关于是否可以删除子域 cookie?的主要内容,如果未能解决你的问题,请参考以下文章
如果所有子域都指向同一个网站,cookie 是不是会在多个子域之间共享? [复制]