1

当用户注销时,我正在尝试使用 C# 删除 cookie。此处列出的代码建议:从浏览器中删除 cookie不起作用。我绝望地把他们中的几个放在一起,他们没有工作。

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 仍然以其原始值存在。那么我该如何摆脱它呢?

谢谢

4

4 回答 4

5

试试这个:

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);

注意(从这里):

您不能直接删除用户计算机上的 cookie。但是,您可以通过将 cookie 的到期日期设置为过去的日期来指示用户的浏览器删除 cookie。下次用户向设置 cookie 的域或路径中的页面发出请求时,浏览器将确定 cookie 已过期并将其删除。

于 2012-09-04T16:38:52.967 回答
3

您正在添加 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");

于 2012-09-04T16:37:41.997 回答
0

尝试 RedFilter 的解决方案,但使用 Server.Transfer() 或 Server.TransferRequest() 而不是 Response.Redirect() 由于可能的错误,它似乎并不总是让这些 cookie 响应发生。

于 2014-06-19T20:42:14.620 回答
-1

关闭浏览器后是否检查 cookie?或者在同一个浏览器中重新加载页面?

如果您在同一个浏览器中打开该页面,您会看到 cookie 已过期,但如果您打开新浏览器并尝试再次访问该页面,您将无法获取 cookie。

于 2014-08-15T21:17:42.020 回答