是否可以删除子域cookie?

dan*_*ges 12 browser cookies http

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

Kol*_*ten 18

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

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

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

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

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

..untested - 应该工作.

  • 澄清一下,cookie 可由创建域或任何子域写入。然后它们可以被 cookie 的域和它的任何子域读取。这在答案中有所涉及,但第一句话不清楚。 (2认同)

Gru*_*l3r 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);
}