簡體   English   中英

如何刪除此Cookie? ASP.NET MVC

[英]How can I delete this cookie? ASP.NET MVC

我嘗試刪除此Cookie: 在此處輸入圖片說明

首先有一點背景。 這是用於在同一域內的不同站點上進行驗證的令牌。 我進入中央登錄頁面。 除注銷外,此頁面工作正常。 我要刪除的所有其他cookie都被JQuery cookie $.removeCookie('cookieName')刪除。 而且我知道,由於有安全標志,我無法從JavaScript中刪除它。

因此,我嘗試從控制器方法中將其刪除。 我通過JavaScript的ajax調用此方法。

$.ajax({ur:'/Login/ExpireToken'})

我可以在Chrome控制台的“網絡”標簽中看到它可以正常運行。

 public void ExpireToken()
 {
      Response.Cookies.Remove("crowd.token_key");
 }

但是,我不知道為什么,這會創建一個新的cookie,該cookie具有相同的名稱,空值,登錄頁面的整個域且未設置任何標志。

因此,我測試了后端是否可以找到我想要的Cookie。

 public string ExpireToken()
 {
        return Response.Cookies["crowd.token_key"].Value;
 }

它返回正確的值,並且不會創建新的/錯誤的值。

之后,我嘗試將過期字段設置為過去或現在的一天。 我不知道為什么這應該起作用,因為此cookie的到期日期已經過去。

public void ExpireToken()
{
   Response.Cookies["crowd.token_key"].Expires = DateTime.Now.AddDays(-1d);
} 

猜猜是什么,它不起作用。 它實際上什么也沒做。

其他無效的方法

if (Request.Cookies["crowd.token_key"] != null)
{
     var c = new HttpCookie("crowd.token_key");
     c.Expires = DateTime.Now.AddDays(-1);
     Response.Cookies.Add(c);
}

根據文檔 ,您正在按自己的預期做事,即將到期日期設置為昨天。 引用:

該技術是使用與要刪除的cookie相同的名稱創建一個新cookie,但是將cookie的到期時間設置為比今天早的日期。 當瀏覽器檢查cookie的到期時間時,瀏覽器將丟棄現在過時的cookie

我會設置一個斷點並進行調試以檢查cookie名稱,如果一切正常,則可能是Web瀏覽器行為異常。

HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i=0; i<limit; i++)
{
    cookieName = Request.Cookies[i].Name;
    aCookie = new HttpCookie(cookieName);
    aCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(aCookie);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM