使cookie过期

时间:2012-04-18 13:19:12

标签: javascript asp.net http cookies web

我正在尝试遵守新的欧盟法律,以便在用户同意之前删除我网站上的所有Cookie。目前我已成功使用以下内容:

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

然而,一旦这个进程运行,仍然会有一个名为ASP.NET_SessionID的cookie,它由ASP.NET创建。为了解决这个问题,我在web.config文件中设置了以下内容,它基本上将sessionID存储在URL中:

 <sessionState regenerateExpiredSessionId="true" cookieless="true" />

我遇到的问题是当我设置cookieless =“true”时,上面的javasscript代码不再删除我的任何cookie,它就像它变得多余了。当我设置cookieless =“false”时,javascript工作得很好。我需要更改其他设置以使两者一起工作吗?

由于

1 个答案:

答案 0 :(得分:1)

如果您不需要会话,可以禁用sessionstate(mode =“Off”)

另外,我经常清理服务器端的cookie,就像这样(虽然它看起来如果它删除了asp.net sessionid):

protected void Page_Load(object sender, EventArgs e)
{
    Response.BufferOutput = true;
    Session.Abandon();
    HttpCookieCollection cookies = Request.Cookies;
    var cookiesList = new List<String>();
    foreach (String cookieKey in cookies)
        cookiesList.Add(cookieKey);

    foreach (var cookieKey in cookiesList)
    {
    var cookie = new HttpCookie(cookieKey);
    cookie.Expires = DateTime.Now.AddDays(-1d);
    Response.Cookies.Add(cookie);
    }
}

希望这可以提供帮助。

相关问题