我正在努力遵守新的欧盟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=设置为“真”时,上面的javasscript代码不再删除我的cookie,它就像是多余的。当我将cookieless=设置为“false”时,javascript可以完美地工作。是否有其他设置需要更改才能让两者协同工作?
谢谢
发布于 2012-04-18 21:55:13
如果您不需要会话,可以禁用会话状态(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);
}
}希望这能有所帮助。
https://stackoverflow.com/questions/10210239
复制相似问题