Frage

Wenn ein Cookie für eine Sub-Domain gesetzt ist, metric.foo.com, gibt es eine Möglichkeit für mich, das metric.foo.com Cookie auf Anfrage www.foo.com zu löschen? Der Browser (mindestens Firefox) scheint einen Set-Cookie mit einer Domäne von metric.foo.com zu ignorieren.

War es hilfreich?

Lösung

Cookies sind nur lesbar von der Domain, die sie erstellt hat, so dass, wenn das Cookie an metric.foo.com erstellt wurde, wird es unter der gleichen Domain gelöscht werden, wie es erstellt wurde. Dazu gehören Subdomains.

Wenn Sie verpflichtet sind, ein Cookie von metric.foo.com zu löschen, werden aber zur Zeit eine Seite bei www.foo.com ausgeführt wird, werden Sie nicht in der Lage.

Um dies zu tun, müssen Sie die Seite von metric.foo.com zu laden, oder das Cookie unter foo.com erstellen, so dass es unter jeder Sub-Domain erreichbar sein kann. Oder verwenden Sie diese:

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

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

.. ungetestet - sollte funktionieren

.

Andere Tipps

Ich hatte das gleiche Problem mit Subdomains. Aus irgendeinem Grund das Cookie zuerst von der Anfrage bekommen hat nicht funktioniert. Stattdessen landete ich gerade ein neues Cookie mit den gleichen Cookie-Namen erstellen, und das Ablaufdatum in der Vergangenheit. Das funktionierte perfekt:

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top