繁体   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