如果有一个子域名为metric.foo.com设置了cookie,我是否有办法在请求www.foo.com上删除metric.foo.com cookie?浏览器(至少是Firefox)似乎忽略了一个域名为metric.foo.com的Set-Cookie.
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名称和过去失效日期的新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); }