Управление состоянием в ASP.NET
Страница 3. Клиентские методы. Cookie


Cookie

Контейнер Cookie представляет собой объектно-ориентированный подход для работы с cookie. На самом деле существует две коллекции Cookie. Первая предоставляется свойством Request веб-страницы и являет собой коллекцию cookies, которые были считаны с клиента. Вторая предоставляется свойством Response и является коллекцией, которая будет записана клиенту.
Следующий пример демонстрирует их использование:


// запись даты последнего посещения сайта
HttpCookie myCookie = new HttpCookie("LastVisit");
DateTime time = DateTime.Now;
myCookie.Value = time.ToString();
myCookie.Expires = time.AddMonths(6);
myCookie.Secure = false;
Response.Cookies.Add(myCookie);
// вывод всех cookies клиента
foreach(string cookieKey in Request.Cookies)
{
HttpCookie cookie = Request.Cookies[cookieKey];
Response.Write(string.Format("Cookie: {0}
Expires: {1}
Secure: {2}
Value: {3}
", cookie.Name, cookie.Expires.ToShortDateString(), cookie.Secure, cookie.Value));
}
// удаление cookie
Response.Cookies["LastVisit"].Value = null;
Response.Cookies["LastVisit"].Expires = DateTime.Now.AddMonths(-1);

При использование этого контейнера следует учитывать такие факты: во-первых клиентский браузер может быть настроен на игнорирование cookies (проверяется с помощью свойства Request.Browser.Cookies); во-вторых большинство современных браузеров имеют ограничение в 4096 байт на размер cookie (хотя некоторые новые браузеры повышают это ограничение до 8192 байт). Неоспоримым достоинством этого подхода является возможность явно установить срок жизни объекта (по умолчанию он равен сроку жизни сессии, т.е. 20 минут).

Кроме вышеуказанных способов, можно также использовать обычные hidden-поля на форме, либо добавлять дополнительные параметры в строке запроса. Однако применение этих методов желательно минимизировать по причинам безопасности. hidden-поля можно использовать для обмена несекретной информацией между кодом, выполняемым на сервере, и скриптом, выполняемым на клиенте. Параметры в строке запроса можно применять для передачи информации между различными страницами. Также неоспоримым достоинством является то, что пользователь может внести страницу вместе с параметрами в список Favorites своего браузера.

 
« Предыдущая статья   Следующая статья »