【问题标题】:How to remove all current domain cookies in MVC website?如何删除 MVC 网站中所有当前的域 cookie?
【发布时间】:2011-09-18 05:44:56
【问题描述】:

我正在开发一个 MVC 网站,我想在我的注销链接中删除所有当前的域 cookie。

我试过了:

this.ControllerContext.HttpContext.Response.Cookies.Clear();

还有这个:

Response.Cookies.Clear();

但两者都不起作用,cookie 仍然存在。

【问题讨论】:

  • 我认为那家伙只是想删除一个 cookie。这家伙想把它们全部删除
  • 是的,我想清除所有 cookie,而不仅仅是一个,删除一个 cookie 很好,我正在询问是否删除所有域 cookie。

标签: asp.net-mvc


【解决方案1】:

这个怎么样?

string[] myCookies = Request.Cookies.AllKeys;
foreach (string cookie in myCookies)
{
  Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1);
}

【讨论】:

  • 没问题。很高兴我能帮上忙。
  • @Swift,这会删除主域的所有 cookie,例如“www.example.com”。如果您想删除所有 cookie 以及“abc.example.com”或“mobile.example.com”等子域怎么办?任何想法。
【解决方案2】:

这个呢?

    if (Request.Cookies["cookie"] != null)
    {
        HttpCookie myCookie = new HttpCookie("cookie");
        myCookie.Expires = DateTime.Now.AddDays(-1d);
        Response.Cookies.Remove(myCookie);
    }

【讨论】:

  • 这是在添加新的 cookie 而不是删除当前的,不是吗?
  • 所以您的想法是添加一个与现有 cookie 同名但有效期为 -1 天的新 cookie?
  • @AmrElGarhy:我现在正在这样做如果您有任何其他更好的方法来清除和更新 cookie,那么请更新相同
  • 我很困惑为什么我们要创建一个具有相同名称的新 cookie 并使其到期,而不是使原始 cookie 到期..
【解决方案3】:
myCookie.Expires = DateTime.Now.AddDays(-1d);

这不会立即清除 cookie。

你可以使用:

myCookie.Expires = DateTime.Now.AddSeconds(1);

立即清除 cookie

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2011-01-19
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多