/ / Como expirar um cookie - javascript, asp.net, http, cookies, web

Fazendo um cookie expirar - javascript, asp.net, http, cookies, web

Estou tentando cumprir a nova lei da UE para a legislação sobre cookies e preciso remover todos os cookies no meu site antes que o usuário consente. Atualmente, usei o seguinte com êxito:

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";
}
}

No entanto, uma vez executado esse processo, ainda háum cookie chamado ASP.NET_SessionID, criado pelo ASP.NET. Para superar isso, defina o seguinte no arquivo web.config, que basicamente armazena o ID da sessão na URL:

 <sessionState regenerateExpiredSessionId="true" cookieless="true" />

O problema que tenho é quando definocookieless = "true" o código javasscript acima não remove mais nenhum dos meus cookies, é como se fosse redundante. Quando defino cookieless = "false", o javascript funciona perfeitamente. Existem outras configurações que preciso alterar para obter ambos para trabalhar juntos?

obrigado

Respostas:

1 para resposta № 1

Se você não precisar de sessão, poderá desativar o estado da sessão (mode = "Off")

Além disso, eu costumo limpar os cookies do lado do servidor, assim (nunca pareceu remover o 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);
}
}

Espero que isso possa ajudar.