是否可以删除子域cookie?

时间:2008-09-22 20:05:09

标签: http browser cookies

如果有子域名为metric.foo.com设置了cookie,我是否有办法在请求www.foo.com上删除metric.foo.com cookie?浏览器(至少是Firefox)似乎忽略了一个域名为metric.foo.com的Set-Cookie。

2 个答案:

答案 0 :(得分:17)

Cookie只能由创建它们的域读取,因此如果cookie是在metric.foo.com上创建的,则必须在创建它的同一域中删除它。这包括子域。

如果您需要从metric.foo.com删除cookie,但目前正在www.foo.com上运行页面,您将无法使用。

为了做到这一点,您需要从metric.foo.com加载页面,或者在foo.com下创建cookie,以便可以在任何子域下访问它。或者用这个:

Response.cookies(“mycookie”)。domain =“。foo.com”

...在创建它时,在删除它之前。

..未经测试 - 应该工作。

答案 1 :(得分:6)

我遇到了与子域名相同的问题。出于某种原因,首先从请求中获取cookie不起作用。相反,我最终只是创建了一个具有相同cookie名称和过去失效日期的新cookie。这非常有效:

void DeleteSubdomainCookie(HttpResponse response, string name)
{
    HttpCookie cookie = new HttpCookie(name);
    cookie.Expires = DateTime.Now.AddMonths(-1);
    cookie.Domain = ".yourdomain.com";
    response.Cookies.Add(cookie);
}