Добрый вечер друзья. Сегодня хочу поговорить о такой интересной штуке, как cookie(в простонародье куки, печеньки). Немного теории...что такое куки? cookie - это небольшой объем именованных данных, которые сохраняются браузером и связаны с определенной страницей или документом...
Данные в печеньке сохраняются в виде пары "имя=значение". Куки по умолчанию временные и хранятся во время сессии. При её окончании данные теряются. Но имеется у них несколько необязательных атрибутов, которые могут указать на время хранение куков, безопасность, версию, каталог и домен действия куков. Разберем по порядку.
Expires(max-age). На данный момент более приемлимым является использование max-age. Этот атрибут указывает на время жизни куков в секундах.При истечении срока хранения браузер удаляет cookie.
Path. Не менее важный атрибут, который по сути задает страницы с которыми связаны наши печеньки. По умолчанию они связаны со странец их создавшей а также другими документами из данного каталога и его подкаталогов. Тоесть если куки создались странице usf3.ru/catalog_1 то они будут видны страницам usf3.ru/catalog_1/filmsи usf3.ru/catalog_1/films/comedy, но не будут видны странице usf3.ru/catalog_2. Но ведь часто данные нужно использовать на достаточно большом пространстве подкаталогов. В это случает используем атрибут path. Если ему установить значение '/' то куки будут видны на любой странице на данном сервере.
Domain. По умолчанию куки доступны только тем страницам, расположенным на веб-сервере который их создал. Тоесть, если куки были созданы на video.usf3.ru, то на music.usf3.ru их посмотреть нельзя. Воспользуемся атрибутом Domain. Если в Path указать '/' а в Domain '.usf3.ru', то данные cookie будут видны на всех поддоменах домена usf3.ru во всех каталогах.
Secure. Последнее их стандартных атрибутов. Указывает как будут передаваться данные в куки. По умолчанию они не защищены и передаются по обычному HTTP. Если этот атрибут установлен, то куки передаются по HTTPS.
Немного практики. Для этого я не буду использовать настоящие куки, а попробую лишь сымитировать их работу. Нажмите на кнопку ниже
в окне пусто? Правильно, куков еще нет. Допустим сервер внес туда данные о версии документа document.cookie='version='+document.lastModified; Что же вышло? В куках имеем
А потом еще и добавили данные о времене жизни(1 год), домене и каталогах
Кроме стандартных атрибутов в куки могут записываться персональные атрибуты, которые в последствии можно извлечь использовать. Например имя юзера, которое он вводит при регистрации.
В значении cookie не должно быть запятых, двоеточий и тд, поэтому зачастую данные перед отправкой кодируют через encodeURIComponent и декодируют через decodeURIComponent при приеме.(замена уставревшим escape/unescape). Строка имени 'май name ис-вася' будет выглядеть так
спасибо. да впринципе так не сильно сложно. единственную реальную сложность представляет извлечение нужного атрибута со строки. там через регулярные выражения.