16

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

4

2 回答 2

21

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

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

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

Response.cookies("mycookie").domain = ".foo.com"

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

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

于 2008-09-22T20:21:14.737 回答
7

我对子域有同样的问题。由于某种原因,首先从请求中获取 cookie 不起作用。相反,我最终只是创建了一个具有相同 cookie 名称和过期日期的新 cookie。效果很好:

void DeleteSubdomainCookie(HttpResponse 响应,字符串名称)
{
    HttpCookie cookie = 新的 HttpCookie(名称);
    cookie.Expires = DateTime.Now.AddMonths(-1);
    cookie.Domain = ".yourdomain.com";
    response.Cookies.Add(cookie);
}
于 2009-02-27T18:18:44.663 回答