2008-09-22 16 views
12

Wenn für eine Subdomain, metric.foo.com, ein Cookie gesetzt ist, kann ich den metric.foo.com-Cookie auf Anfrage an www.foo.com löschen? Der Browser (zumindest Firefox) scheint ein Set-Cookie mit einer Domain von metric.foo.com zu ignorieren.Können Subdomain-Cookies gelöscht werden?

Antwort

16

Cookies können nur von der Domäne gelesen werden, die sie erstellt hat. Wenn der Cookie also unter metric.foo.com erstellt wurde, muss er unter derselben Domäne gelöscht werden, in der er erstellt wurde. Dies beinhaltet Sub-Domains.

Wenn Sie einen Cookie von metric.foo.com löschen müssen, aber derzeit eine Seite auf www.foo.com laufen lassen, können Sie dies nicht tun.

Um dies zu tun, müssen Sie die Seite von metric.foo.com laden, oder erstellen Sie den Cookie unter foo.com, so dass es unter jeder Subdomain zugänglich sein kann. Oder verwenden Sie das:

Response.Cookies ("MyCookie") domain = ".foo.com"

... während es erzeugt, und bevor Sie es löschen..

..unversehrt - sollte funktionieren.

5

Ich hatte das gleiche Problem mit Subdomains. Aus irgendeinem Grund hat es nicht funktioniert, den Cookie zuerst von der Anfrage zu bekommen. Stattdessen habe ich nur ein neues Cookie mit dem gleichen Cookie-Namen und dem Ablaufdatum in der Vergangenheit erstellt. Das hat perfekt funktioniert:

 
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); 
} 
Verwandte Themen