[英]How can I delete this cookie? ASP.NET MVC
首先有一點背景。 這是用於在同一域內的不同站點上進行驗證的令牌。 我進入中央登錄頁面。 除注銷外,此頁面工作正常。 我要刪除的所有其他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.