Всем привет! Сегодня мне бы хотелось поделиться с теми, кто еще не в курсе, теорией, как работать с куками из JS. JS не предоставляет удобного API для работы с файлами cookie. И это, в принципе, неплохо, могло быть и хуже (например, js вообще не реализовал бы работу с куками), но все же лучше, когда куки можно читать одной инструкцией (что пока невозможно с нативными js).
Для них существует множество фреймворков и плагинов, восполняющих этот недостаток.
Однако есть проекты, где подключать фреймворк только для удобства работы с cookie-файлами нецелесообразно.
Собственно, я поставил и реализовал задачу по созданию методов управления куками, с красивыми аксессорами типа: cookie.set('bla', 'blabla');
cookie.get('bla');
code.google.com/p/jscookie — страница в коде Google
Немного теории о механизме, предоставляемом js для работы с файлами cookie:
Все, что у нас есть, это свойство document.cookie; он не реализует никаких методов, знакомых среднестатистическому программисту, таких как document.cookie.get('bla');
Чтение файлов cookie
document.cookie содержит набор значений cookie_name=cookie_value; (через «;» (точка с запятой плюс пробел)), отсюда следует, что для того, чтобы получить значение конкретного куки, нужно разобрать всю строку и вытащить необходимые данные.Примечательно то, что свойство содержит пары имя=значение и не содержит никаких дополнительных данных о файлах cookie, таких как: время истечения срока действия, путь, домен, безопасность.
Создание/обновление файлов cookie
document.cookie ведет себя как строка, но не как обычная.
Давайте представим, что у нас есть 2 куки key1 = val1 и key2 = val2. alert(document.cookie) //key1=val1; key2=val2;
Чтобы добавить новый файл cookie, ключ3 = val3 document.cookie= 'key3=val3; ';
alert(document.cookie) //key1=val1; key2=val2; key3=val3;
Чтобы обновить файл cookie, установите для ключа 2 значение hello world. document.cookie= 'key2=hello world; ';
alert(document.cookie) //key1=val1; key2=hello world; key3=val3;
Удаление файлов cookie
Теперь я расскажу вам немного о файлах cookie как таковых, я не претендую на полное и доскональное знание этой темы, я просто расскажу вам немного о том, что знаю.Кук, помимо названия и значения, имеет в своем арсенале еще несколько важных свойств, а именно: expires — время, по истечении которого файл cookie будет удален.
домен — домен, для которого действителен куки, грубо говоря, если куки был создан на домене js.com, то он не будет виден ни на каком другом домене.
путь — набор документов, для которых браузер будет отправлять куки по запросу.
Secure — свойство флага, которое позволяет браузеру отправлять файлы cookie только во время соединения https. вообще все это записывается в виде document.cookie = 'key4=val4; [expires=Сб, 09 января 2010 г.
, 16:14:53 по Гринвичу; ][путь=/; ][домен=js.com; ][безопасный; ]
Хитрость удаления файлов cookie заключается в обновлении файла cookie свойством expires, указывающим назад во времени, например: document.cookie= 'key2=; expires=Mon, 05 Jul 1982 16:37:55 GMT; ';
alert(document.cookie)//key1=val1; key3=val3;
На самом деле все
UPD: это мой первый пост, прошу не давить слишком сильно.
надеюсь кому-то будет полезно Теги: #JavaScript #Cookies #Чулан
-
Довольны Ли Вы Новинками От Macworld?
19 Oct, 24 -
Сервис Hpe: Суровые Будни И Забавные Истории
19 Oct, 24 -
Корпоративный Отбор.
19 Oct, 24 -
Пополнение Базы Классификаторов
19 Oct, 24 -
Aws: Amazon Linux 2012.09
19 Oct, 24