Опитвам се да спазвам новото законодателство на ЕС за законодателството в областта на бисквитките и трябва да премахна всички бисквитки на моя сайт, преди потребителят да се съгласи с него. В момента успешно използвам следното:
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, която е създадена от ASP.NET. За да преодолея това, зададох следното във файла web.config, който основно съхранява sessionID в URL адреса:
<sessionState regenerateExpiredSessionId="true" cookieless="true" />
Проблемът, който имам, е когато го настрояcookieless = "true" кодът на javasscript по-горе не премахва нито една от бисквитките ми, като че ли става излишна. Когато задам cookieless = "false", javascript работи перфектно. Има ли други настройки, които трябва да променя, за да получа и двете да работят заедно?
Благодаря
Отговори:
1 за отговор № 1Ако не се нуждаете от сесия, можете да деактивирате sessiontatetate (mode = "Off")
Също така обикновено почиствам бисквитките от страна на сървъра, като този (никога не изглеждах дали е премахнат 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);
}
}
Надявам се това да помогне.