Печенье ?

Веб-связь осуществляется по набору правил, называемых HTTP-протоколом. Протокол сам по себе не имеет состояния и ничего не запоминает. Поэтому эффективно поддерживаются файлы cookie состояния. Файлы cookie — это часть информации, предназначенная для отслеживания пользователя или предоставления ему лучшего пользовательского опыта.

Работающий ?

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

Файлы cookie — это простая текстовая запись данных из 5 полей переменной длины:

  • Истекает — дата истечения срока действия файла cookie. Если это поле пусто, срок действия файла cookie истечет, когда посетитель закроет браузер.
  • Домен — доменное имя вашего сайта.
  • Путь — путь к каталогу или веб-странице, на которой установлен файл cookie. Это может быть пустым, если вы хотите получить файл cookie из любого каталога или страницы.
  • Безопасный — если это поле содержит слово «безопасный», то файл cookie может быть получен только с защищенного сервера. Если это поле пустое, такого ограничения не существует.
  • Name=Value — файлы cookie устанавливаются и извлекаются в виде пар ключ-значение.

Примечание. JavaScript также может управлять файлами cookie с помощью свойства cookie объекта Document.

Хранение файлов cookie

Самый простой способ создать файл cookie — присвоить объекту document.cookie строковое значение, которое выглядит следующим образом.

document.cookie = "key1 = value1;key2 = value2;expires = date";

Здесь атрибут expires является необязательным. Если вы укажете для этого атрибута допустимую дату или время, срок действия файла cookie истечет в указанную дату или время, после чего значение файла cookie будет недоступно.

Примечание. Значения файлов cookie не могут содержать точки с запятой, запятые или пробелы. По этой причине вы можете использовать функцию JavaScript escape() для кодирования значения перед его сохранением в файле cookie. Если вы сделаете это, вам также придется использовать соответствующую функцию unescape() при чтении значения cookie.

Пример

<html>
   <head>   
      <script type = "text/javascript">
            function WriteCookie() {
               if( document.myform.customer.value == "" ) {
                  alert("Enter some value!");
                  return;
               }
               cookievalue = escape(document.myform.customer.value) + ";";
               document.cookie = "name=" + cookievalue;
               document.write ("Setting Cookies : " + "name=" + cookievalue );
            }
      </script>      
   </head>
   
   <body>      
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie();"/>
      </form>   
   </body>
</html>

Выход

Теперь на вашем компьютере есть файл cookie с именем name. Вы можете установить несколько файлов cookie, используя несколько пар ключ = значение, разделенных запятой.

Чтение файлов cookie

Чтение файла cookie так же просто, как и его запись, потому что значением объекта document.cookie является файл cookie. Таким образом, вы можете использовать эту строку всякий раз, когда хотите получить доступ к файлу cookie. Строка document.cookie будет содержать список пар имя=значение, разделенных точкой с запятой, где имя — это имя файла cookie, а значение — его строковое значение.

Вы можете использовать функцию строк split(), чтобы разбить строку на ключ и значения следующим образом:

Пример

<html>
   <head>   
      <script type = "text/javascript">
         <!--
            function ReadCookie() {
               var allcookies = document.cookie;
               document.write ("All Cookies : " + allcookies );
               
               // Get all the cookies pairs in an array
               cookiearray = allcookies.split(';');
               
               // Now take key value pair out of this array
               for(var i=0; i<cookiearray.length; i++) {
                  name = cookiearray[i].split('=')[0];
                  value = cookiearray[i].split('=')[1];
                  document.write ("Key is : " + name + " and Value is : " + value);
               }
            }
         //-->
      </script>      
   </head>
   
   <body>     
      <form name = "myform" action = "">
         <p> click the following button and see the result:</p>
         <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/>
      </form>      
   </body>
</html>

Примечание. Здесь length — это метод класса Array, который возвращает длину массива. Мы обсудим массивы в отдельной главе. К тому времени, пожалуйста, постарайтесь переварить это.

На вашем компьютере уже могут быть установлены некоторые другие файлы cookie. Приведенный выше код отобразит все файлы cookie, установленные на вашем компьютере.

Установка даты истечения срока действия файлов cookie

Вы можете продлить срок действия файла cookie за пределами текущего сеанса браузера, установив дату истечения срока действия и сохранив дату истечения срока действия в файле cookie. Это можно сделать, установив для атрибута expires дату и время.

Пример

Попробуйте следующий пример. Он иллюстрирует, как продлить срок действия файла cookie на 1 месяц.

<html>
   <head>   
      <script type = "text/javascript">
            function WriteCookie() {
               var now = new Date();
               now.setMonth( now.getMonth() + 1 );
               cookievalue = escape(document.myform.customer.value) + ";"
               
               document.cookie = "name=" + cookievalue;
               document.cookie = "expires=" + now.toUTCString() + ";"
               document.write ("Setting Cookies : " + "name=" + cookievalue );
            }
      </script>      
   </head>
   
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>      
   </body>
</html>

Удаление файла cookie

Иногда вам может понадобиться удалить файл cookie, чтобы последующие попытки прочитать файл cookie ничего не вернули. Для этого вам просто нужно установить дату истечения срока действия в прошлом.

Пример

Попробуйте следующий пример. На нем показано, как удалить файл cookie, установив срок его действия на один месяц позже текущей даты.

<html>
   <head>   
      <script type = "text/javascript">
            function WriteCookie() {
               var now = new Date();
               now.setMonth( now.getMonth() - 1 );
               cookievalue = escape(document.myform.customer.value) + ";"
               
               document.cookie = "name=" + cookievalue;
               document.cookie = "expires=" + now.toUTCString() + ";"
               document.write("Setting Cookies : " + "name=" + cookievalue );
            }
      </script>      
   </head>
   
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>      
   </body>
</html>

Справочник

http://www.tutorialspoint.com/javascript/javascript_cookies.htm