Почему мой файл cookie не удаляется / не удаляется? - PullRequest
6 голосов
/ 12 марта 2009

У меня есть ссылка для входа в систему, которая запускает функцию JavaScript, которая вызывает страницу выхода из системы. Вот из чего состоит страница выхода:

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

Первоначально у меня там были только cookie-файлы. Но это не сработало.

Вот 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 также не работает. Файл cookie устанавливается ASP.NET, поэтому я решил, что могу сбросить его и с ASP.NET, но, очевидно, нет. Есть идеи / предложения?

Ответы [ 2 ]

10 голосов
/ 12 марта 2009

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

HttpCookie cookie = Request.Cookies["aLog"];
cookie.Expires = DateTime.Now.AddYears(-10);
Response.AppendCookie(cookie);
4 голосов
/ 12 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...