Cookies

advertisement
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных
технологий физического факультета Донецкого национального университета
Технологии
разработки Internetприложений
ASP.NET приложения – Cookies
Выполнил студент: Тышлек С.В., 2009
проф. В.К.Толстых, www.tolstykh.com
Cookies
Файл Cookie – до 4 Кб, - до 300 файлов
для каждого пользователя,
до 20 значений от одного домена
Cookie (печенье, проныра) - это текстовая строка, которая может
включаться в запросы и ответы протокола HTTP. Разработчики Webприложений организуют хранение в файлах Сookie на компьютере
пользователя такие сведения, как персональные данные пользователя,
логин и пароль, свои глобальные переменные и др. данные
необходимые им для обработки последующих посещений клиента.
Постоянным файлом Cookie называется файл, сохраняемый на
компьютере после выхода из браузера. Этот файл Cookie может быть
прочитан сайтом при его повторном посещении. Сохраненный на
компьютере файл Cookie может прочитать только тот сайт, который его
создал. Браузер, перед соединением с каждым сайтом, проверяет нет
ли от него Cookie, если есть – добавляет его содержимое к HTTPзапросу этого сайта.
Временные (сеансовые) файлы Cookie сохраняются только в
течение текущего сеанса обозревателя и удаляются с компьютера
после выхода из браузера.
Cookies
где находятся и
как выглядят
Браузер отправляет серверу
заголовки его коллекций cookie
толстых@google[1].txt
Заголовок Cookie
PREF
- имя Cookie
ID=87b064fd051aeab5:TM=11273990
36:LM=1127399036:S=BBYhpV8Zu96
- его значение
Jn_bq
google.com/
1536
2618878336
32111634
1143386432
Cookie 1
29736833
*
C:\Documents and Settings\пользователь\Cookies
толстых@Cookie[2].txt :
Заголовок Cookie 1
- имя Cookie 1
LastVisit
10.03.2005+16%3A38%3A38 - его значение
localhost/net-web/Scripts/Cookie.exe/
1024
302955264
29739266
3267401456
Cookie 1
29739039
*
Заголовок Cookie 2
- имя Cookie 2
Hi
- его значение
Hallo%20+Client!
localhost/net-web/Scripts/Cookie.exe/
1024
302955264
29739266
3267401456
Cookie 2
29739039
*
При повторной записи Cookie значения одинаковых параметров обновляются, а новые – добавляются. При этом имя
файла Cookie получает очередной номер в квадратных скобках.
Класс HttpCookie
 Свойства класса:
 Domain - домен
 Expires - дата истечения
 HasKeys - установлены ли ключи (коллекция пар ключ/значение)
 HttpOnly - значение, определяющее, доступен ли cookie






клиентским скриптам (false – доступен)
Item - ссылка на HttpCookie.Values
Name – имя cookie
Path - путь
Secure – флаг передачи cookie по SSL (HTTPS)
Value – значение
Values –коллекция пар ключ/значение
Класс HttpCookie
 Конструктор класса:
 HttpCookie(String) – Создает cookie с названием
 HttpCookie(String, String) – Создает cookie с названием и
значением
 Класс имеет лишь методы, наследованные от Object
Работа с Cookie в ASP.NET
 Действия над Cookie (чтение/запись/удаление) в ASP.NET
осуществляются подобно предшественнику – ASP, через свойства
Page.Request и Page.Response, классов HttpRequest и HttpResponse
соответственно.
 Каждый из них содержит коллекцию класса HttpCookieCollection с
названием Cookies.
 HttpCookieCollection является удобным инструментом,
контейнером для объектов класса HttpCookie, наследован от
NameObjectCollectionBase, за счет чего содержит общие методы
для работы с коллекциями.
Request.Cookies (чтение)
 Request.Cookies[<индекс|имя>]
или
Request.Cookies[<индекс|имя>].Value –
чтение значения cookie по индексу либо названию в коллекции
 Request.Cookies [<индекс|имя>][<имя подраздела>]
или
Request.Cookies[<индекс|имя>].Values[<индекс|имя подраздела >] –
чтение значения подраздела cookie.
 Request.Cookies[<индекс|имя>].Values.AllKeys[<индекс>] –
чтение имен подразделов.
 Request.Cookies.Count – получить количество cookie.
Response.Cookies (запись)
 Response.Cookies[<индекс|имя>].Value –
установка значения cookie (при указании еще не существующего имени
cookie будет создан, несуществующего индекса – исключение).
 Response.Cookies.Add(HttpCookie) –
добавление cookie из объекта типа куки.
 Response.Cookies[<индекс|имя>][< индекс|имя подраздела>]
или
Response.Cookies[<индекс|имя>].Values[<индекс|имя подраздела>] –
установка значения подраздела внутри cookie.
 Response.Cookies[<индекс|имя>].Values.AllKeys[<индекс>] –
установка имени подраздела по индексу.
Удаление Cookie
 В ASP.NET не существует прямых функций по удалению
cookie, т.к. фактически файлы cookie хранятся на
компьютере пользователя, однако можно сделать так, чтобы
браузер самостоятельно удалил cookie путем установки
значения истечения срока действия в прошлое (поле Expires
объекта HttpCookie).
Пример Cookie
В примере показаны два способа записи одного файла Сookie, в
каждом из которых два подраздела:
 Response.Cookies["userInfo"]["userName"] = "Patrick";
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);
 HttpCookie aCookie = new HttpCookie("userInfo");
aCookie.Values["userName"] = "Patrick";
aCookie.Values["lastVisit"] = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
Download