【发布时间】:2012-04-29 21:57:07
【问题描述】:
我正在努力遵守关于 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" 时,上面的 JavaScript 代码不再删除我的任何 cookie,就像它变得多余一样。当我设置 cookieless="false" 时,javascript 工作得很好。是否需要更改任何其他设置才能使两者协同工作?
谢谢
【问题讨论】:
-
当关闭浏览器或所有页面时,此 cookie 将自动删除,因为它是会话 cookie(仅在当前会话中有效)。所以不用担心。您可以设置会话状态 cookie 过期的时间。
标签: javascript asp.net http cookies web