javascript - 使 cookie 过期

标签 javascript asp.net http cookies web

我正在努力遵守新的欧盟 cookie 立法法律,需要在用户同意之前删除我网站上的所有 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 完美运行。是否需要更改任何其他设置才能使两者协同工作?

谢谢

最佳答案

如果不需要session,可以禁用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);
    }
}

希望对您有所帮助。

关于javascript - 使 cookie 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210239/

相关文章:

javascript - 两个日期之间的 Bootstrap 数据表过滤器,例如一周到一周

c# - 如何使用javascript重定向页面

c# - 远程处理异常 : Object 'xxx.rem' has been disconnected or does not exist at the server

javascript - AJAX 可访问的长时间运行的服务任务在启用 ASP.NET 兼容性/ session 的环境中阻止后续的 AJAX 服务请求

php - Zoopla 沙箱出现 cURL http header 错误

javascript - 当用户不断滚动网页时,有没有办法让我的 div 背景越来越不透明?

javascript - Angular2 使用正则表达式验证输入

javascript - 退格键未清除 mozilla 浏览器中的字段

jquery - 如何使用 JQuery 将文件上传到 MVC VNext 网络服务器?

debugging - 如何调试 RESTful 服务?