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