首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使cookie过期

使cookie过期
EN

Stack Overflow用户
提问于 2012-04-18 21:19:12
回答 1查看 325关注 0票数 2

我正在努力遵守新的欧盟cookie立法的法律,需要删除我的网站上的所有cookie之前,用户同意它。目前,我已经成功地使用了以下内容:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
 <sessionState regenerateExpiredSessionId="true" cookieless="true" />

我遇到的问题是,当我将cookieless=设置为“真”时,上面的javasscript代码不再删除我的cookie,它就像是多余的。当我将cookieless=设置为“false”时,javascript可以完美地工作。是否有其他设置需要更改才能让两者协同工作?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2012-04-18 21:55:13

如果您不需要会话,可以禁用会话状态(mode="Off")

另外,我通常在服务器端清理cookie,就像这样(如果删除了asp.net sessionid,我就不会看了):

代码语言:javascript
复制
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);
    }
}

希望这能有所帮助。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10210239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档