2008-09-22 116 views
12

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

回答

16

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

如果您需要从metric.foo.com中删除一个cookie,但当前正在www.foo.com上运行一个页面,您将无法做到这一点。

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

Response.cookies( “的myCookie”)域= “.foo.com中”

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

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

5

我有与子域相同的问题。由于某种原因,首先从请求中获取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); 
}