Из цикла лекций «Технологии разработки 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);