Javascript 使饼干过期

Javascript 使饼干过期,javascript,asp.net,http,cookies,web,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 = cook

我正在努力遵守欧盟关于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";
    }
}
函数deleteAllCookies(){
var cookies=document.cookie.split(“;”);
对于(变量i=0;i-1?cookie.substr(0,eqPos):cookie;
document.cookie=name+“=;expires=Thu,1970年1月1日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可以完美地工作。我是否需要更改其他设置以使两者协同工作


谢谢

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

此外,我通常在服务器端清理cookies,如下所示(但从未查看是否删除了asp.net sessionid):

受保护的无效页面加载(对象发送方,事件参数e)
{
Response.BufferOutput=true;
会话。放弃();
HttpCookieCollection cookies=Request.cookies;
var cookiesList=新列表();
foreach(cookies中的字符串cookieKey)
添加(cookieKey);
foreach(cookiesList中的var cookieKey)
{
var cookie=新的HttpCookie(cookieKey);
cookie.Expires=DateTime.Now.AddDays(-1d);
Response.Cookies.Add(cookie);
}
}

希望这能有所帮助。

关闭浏览器或您的所有页面时,此cookie将自动删除,因为它是会话cookie(仅对当前会话有效)。所以不要担心。您可以设置会话状态cookie过期的时间。很好,我使用的.net代码似乎不起作用,但您的代码由于某种原因起作用了。谢谢,小伙子,我能帮忙。顺便说一句:出于安全原因,会话cookie通常是“HttpOnly”,这会阻止客户端(java)脚本的访问。这可能就是为什么你不能通过js来清理它。
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);
    }
}