2012-04-18 4 views
2

Я стараюсь соблюдать новый закон ЕС о законодательстве о печенье и должен удалить все файлы 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, который создается ASP.NET. Для преодоления этого я установил следующее в файле web.config, который в основном хранит SESSIONID в URL:

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

У меня есть проблема, когда я поставил Cookieless = «истинный» код JavasScript выше не удаляет любое из моих файлов cookie больше похоже на то, что оно становится излишним. Когда я устанавливаю cookieless = "false", javascript отлично работает. Есть ли какие-либо другие настройки, которые мне нужно изменить, чтобы заставить обе работать вместе?

Благодаря

+1

Этот файл cookie будет автоматически удаляться при закрытии браузера или всех ваших страниц, потому что это cookie сеанса (его жизнь только для текущего сеанса). Так что не беспокойтесь. Вы можете просто установить время истечения срока действия cookie состояния сеанса. – Aristos

ответ

1

Если вам не нужны сессии, вы можете отключить sessionstate (режим = «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); 
    } 
} 

Надеюсь, это поможет.

+0

отлично, код .net, который я использовал, по-видимому, не работал, но по какой-то причине ваш. Спасибо – mjroodt

+0

Рад, что я мог помочь. BTW: по соображениям безопасности сеансовые файлы cookie часто являются «HttpOnly», что предотвращает доступ с клиентского (java) скрипта. Вероятно, поэтому вы не могли очистить его через js. – jbl

Смежные вопросы