Est-il possible de supprimer les cookies de sous-domaine?
Question
Si un cookie est défini pour un sous-domaine, metric.foo.com, puis-je supprimer le cookie metric.foo.com lors d'une demande à l'adresse www.foo.com? Le navigateur (au moins Firefox) semble ignorer un Set-Cookie avec un domaine de metric.foo.com.
La solution
Les cookies ne sont lisibles que par le domaine qui les a créés. Par conséquent, si le cookie a été créé sur metric.foo.com, il devra être supprimé du même domaine que celui qui a été créé. Cela inclut les sous-domaines.
Si vous devez supprimer un cookie de metric.foo.com, mais que vous exécutez actuellement une page sur www.foo.com, vous ne pourrez pas le faire.
Pour ce faire, vous devez charger la page à partir de metric.foo.com ou créer le cookie sous foo.com afin qu'il soit accessible sous n'importe quel sous-domaine. OU utilisez ceci:
Response.cookies ("mycookie"). domain = ".foo.com"
... en le créant ET avant de le supprimer.
.. non testé - devrait fonctionner.
Autres conseils
J'ai eu le même problème avec les sous-domaines. Pour une raison quelconque, obtenir le cookie en premier à partir de la demande n'a pas fonctionné. Au lieu de cela, j'ai fini par créer un nouveau cookie avec le même nom de cookie et la même date d'expiration. Cela a parfaitement fonctionné:
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); }