[英]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.