我正在尝试在用户注销时使用C#删除Cookie。此处列出的代码建议:remove cookies from browser不起作用。我把他们中的几个放在一起绝望,他们没有工作。
if (Request.Cookies["loginidcookie"] != null)
{
HttpCookie myCookie = new HttpCookie("loginidcookie");
myCookie.Value = String.Empty;
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
Response.Cookies.Remove("loginidcookie");
}
Response.Redirect("logout.aspx");
因此,我不仅用空字符串覆盖cookie的值,我将其设置为昨天到期并将其从cookie列表中删除。然而,当我运行此代码然后点击后退按钮并重新加载时,cookie仍然存在其原始值。那我怎么摆脱它?
谢谢
答案 0 :(得分:4)
请改为尝试:
string cookieName = "loginidcookie";
if (Request.Cookies[cookieName ] != null)
{
var myCookie = new HttpCookie(cookieName);
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
Response.Redirect("logout.aspx", false);
注意(from here):
您无法直接删除用户计算机上的Cookie。但是,你 可以通过设置来指示用户的浏览器删除cookie cookie的过期日期到过去的日期。下次用户制作时 请求设置cookie的域或路径中的页面 浏览器将确定cookie已过期并将其删除。
答案 1 :(得分:2)
您正在添加Cookie,然后在发送响应之前将其从集合中删除,这样您实际上什么都不做。
HttpCookie myCookie = new HttpCookie("loginidcookie");
... and then below
Response.Cookies.Add(myCookie);
Response.Cookies.Remove("loginidcookie");
如果您将cookie更改为昨天过期,则需要leave
该集合中的cookie,以便浏览器在看到cookie已更新过去的过期日期后负责删除它。换句话说,请勿拨打Response.Cookies.Remove("loginidcookie");
答案 2 :(得分:0)
尝试RedFilter的解决方案,但使用Server.Transfer()或Server.TransferRequest()而不是Response.Redirect(),似乎并不总是让那些cookie响应由于可能的错误而发生。
答案 3 :(得分:-1)
关闭浏览器后,您是否正在检查Cookie?或者在同一个浏览器中重新加载页面?
如果您在同一浏览器中打开该页面,您将看到已过期的Cookie,但如果您打开新浏览器并尝试再次访问该页面,则无法获取该Cookie。