2009-03-12 4 views
6

У меня есть ссылка для входа, которая запускает функцию javascript, которая вызывает страницу выхода. Это то, что страница выхода состоит из:Почему мой cookie не удаляется/удаляется?

If Response.Cookies.Count > 0 Then 
    Response.Cookies("aLog").Value = Nothing 
    Response.Cookies.Clear() 
End If 

Первоначально я только что был cookies.clear там, но это не работает.

Вот Javascript, что отправить запрос на странице выхода:

<script type="text/javascript"> 
    //<![CDATA[ 
    $(document).ready(function() { 
     $('#logout-link').click(function() { 
      if (confirm("Really log out?")) { 
       $.cookie('aLog', null); 
       location.href = $(this).attr('href'); 
      } 
      return false; 
     }); 
    }); 
    //]]> 
</script> 

Функция JQuery $.cookie не работает. Печенье настроено на ASP.NET, поэтому я решил, что смогу отключить его и с ASP.NET, но, видимо, нет. Любые идеи/предложения?

ответ

10

Работа с кукисами в ASP.NET может быть немного неинтуитивной. Чтобы убить cookie, который уже существует на стороне клиента, вы должны установить дату его истечения в прошлом и повторно отправить клиенту новый файл cookie. Клиентский браузер будет обновлять существующие кук с новым сроком годности, а затем сразу же убить его, поскольку он уже прошел срок годности:

HttpCookie cookie = Request.Cookies["aLog"]; 
cookie.Expires = DateTime.Now.AddYears(-10); 
Response.AppendCookie(cookie); 
+1

Итак, я добрался до моей страницы выхода, он говорит, что cookie не установлен (request.cookies.count = 0), но когда он перенаправляется на страницу входа в систему, cookie снова появляется? как раздражает. – Anders

+0

re: 'AppendCookie':« Этот API поддерживает инфраструктуру .NET Framework и не предназначен для непосредственного использования из вашего кода ». [Ref] (http://msdn.microsoft.com/en-us/library/system.web.httpresponse.appendcookie.aspx) – HABO

4

В дополнении к тому, что сказал Рекс, вы всегда должны быть устанавливающее «пути 'любого cookie, который вы используете (обычно для чего-то вроде «/»). В противном случае видимость файла cookie зависит от имени папки в URL-адресе, поэтому, если у вас есть что-то, кроме плоской настройки схемы URL-адреса, а удаление файлов cookie будет работать очень непредсказуемо.

+0

Хороший совет. Моя проблема возникла при настройке файла cookie с помощью jQuery и удалении его на странице ASP по другому пути. – CleanUp

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