2008-09-22 93 views
12

如果有一個爲子域名設置的cookie,metric.foo.com,有沒有辦法讓我刪除metric.foo.com cookie,請求www.foo.com?瀏覽器(至少Firefox)似乎忽略了一個帶有metric.foo.com域的Set-Cookie。是否可以刪除子域cookie?

回答

16

Cookie只能由創建它們的域讀取,因此如果cookie是在metric.foo.com創建的,則必須在創建它的同一個域下刪除它。這包括子域。

如果您需要從metric.foo.com中刪除一個cookie,但當前正在www.foo.com上運行一個頁面,您將無法做到這一點。

爲了做到這一點,您需要從metric.foo.com加載頁面,或者在foo.com下創建cookie,以便在任何子域下都可以訪問。或使用本:

Response.cookies( 「的myCookie」)域= 「.foo.com中」

...創建的同時,你刪除它之前。

..未經測試 - 應該可以工作。

5

我有與子域相同的問題。由於某種原因,首先從請求中獲取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); 
}