Куки

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

HTTP-cookie, «Ку́кі» або «реп'яшки» (англ. Cookie, множина англ. Cookies - тістечка, печиво) — в комп'ютерній термінології поняття, яке використовується для опису інформації у вигляді текстових або бінарних даних, отриманих від веб-сайту на веб-сервері, яка зберігається у клієнта, тобто браузера, а потім відправлена на той же сайт, якщо сайт повторно відвідати.

Таким чином веб-сервер помічає браузер користувача при відвідуванні. Куки створюються за ініціативою скриптового сценарію на стороні веб-браузера. При наступному візиті сервер буде знати, що користувач вже тут був. За допомогою кукі-технології можна вивчити вподобання відвідувача. Кукі є одним із найточніших засобів визначення унікального користувача.

Файл «cookies» (невеликий файл з налаштуваннями профілів) полегшує користування веб-сайтом, записуючи дані, необхідні для входу в систему та збору статистики.[1] Користуватися сайтом можна також без файлів «cookies».[1] Більшість інтернет-користувачів автоматично приймають файли «cookies». Їх можна вимкнути в будь-який момент або налаштувати пошукову систему так, щоб вона повідомляла про всі випадки, пов'язані з відправкою файлів цього типу.[1]

Застосовується для збереження даних, специфічних для даного користувача, і використовуваних веб-сервером для різних цілей, серед яких:

  • у системах з віддаленим доступом — пароль, що породжується сервером при першому підключенні і посилається користувачеві; при подальших підключеннях користувач повинен надавати серверу цей пароль
  • відстежування стану сесії

Концепція була розроблена компанією Netscape.

Механізм Http-cookie[ред.ред. код]

Сервер може встановити кукі у відповідь на запит браузера. Для цього служить заголовок відповіді (response header) Set-cookie.

Кукі також може бути встановлений і самим браузером через Javascript, який підтримується більшістю сучасних браузерів.

Браузер повинен зберігати кукі на період визначений для її часу життя і посилати кукі на сервер в заголовку запиту (request header) Cookie.

У запиті посилаються тільки ті кукі, які відповідають домену, шляху і протоколу для яких куки була встановлена.

Вищевикладений механізм застосовний і для будь-якого іншого, відмінного від браузера, клієнтського застосування, що обмінюється інформацією з веб-сервером по протоколу HTTP/HTTPS.

Синтаксис RESPONSE Header (Set-cookie)[ред.ред. код]

set-cookie      =       "Set-cookie:" cookies
cookies         =       1#cookie
cookie          =       NAME "=" VALUE *("; " cookie-av)
NAME            =       attr
VALUE           =       value
cookie-av       =       "Comment" "=" value
                   |       "Expires" "=" value
                   |       "Domain" "=" value
                   |       "Max-age" "=" value
                   |       "Path" "=" value
                   |       "Secure"
                   |       "Version" "=" 1*digit

Неофіційно заголовок відповіді Set-cookie починається з «Set-cookie:»(без лапок). Кожен cookie починається з пари Name=value; за нею можуть іти ще пари Name=value, розділені парою символів «крапка з комою, пропуск» — "; "(без лапок). Синтаксис пари Name=value показаний раніше. Специфікація атрибутів і їхньої семантики йде далі. Пара Name=value повинна йти першою в кожному cookie. Інші пари ім'я-значення можуть іти далі в довільному порядку. Якщо ім'я змінної зустрічається в cookie неодноразово, поведінка не визначена.

name=value

Обов'язково. Ім'ям пакету інформації є NAME, значенням — VALUE. імена, що починаються з символу «$»(без лапок), зарезервовані і не можуть використовуватися в додатках.

VALUE є "непрозорим" користувачеві і може бути чим завгодно, що сервер хоче послати, можливо у визначеному сервером придатним для друку ASCII — кодуванню. «Непрозорість» означає, що зміст цікавий і доцільний лише серверу що послав cookie. Зміст може, фактично, бути легким для читання будь-кому, хто досліджує cookie.

comment=comment

Опціонально. Оскільки cookie може містити приватну інформацію про користувача, атрибут Comment дозволяє серверу документувати намічене використання cookie. Користувач може проглянути інформацію, щоб вирішити, чи почати(продовжити) сесію з цим cookie.

expires=date Опціонально. Аттрібут Expires указує час зберігання cookie. Замість date повинна стояти дата у форматі «expires=sun, Dd-mon-yyyy Hh:mm:ss GMT», після якої закінчується час зберігання cookie. Якщо цей атрибут не вказаний, то cookie зберігається протягом одного сеансу, до закриття браузера.

domain=domain

Опціонально. Атрибут Domain визначає домен, для якого cookie є дійсним. Явно вказаний домен повинен завжди починатися з крапки.

max-age=delta-seconds

Опціонально. Атрибут Max-age визначає час життя cookie в секундах. Значення delta-seconds — десяткове не — негативне ціле число. Після закінчення delta-seconds клієнт повинен відмовитися від куки. Значення нуля означає, що від cookie потрібно відмовитися негайно.

path=path

Опціонально. Атрибут Path визначає підмножина URL, до яких застосовується cookie.

secure

Опціонально. Маркер Secure (значення не привласнюється) наказує використовувати тільки (невказаний) безпечний метод з'єднання з сервером всякий раз, коли необхідно послати назад цей cookie.

Програма (можливо під контролем користувача) може визначити, який рівень безпеки відповідає для «secure» cookie. Атрибут Secure потрібно розуміти як радий з безпеки від сервера, вказуючи, що в інтересі сесії захистити зміст cookie.

version=version

Обов'язково. Атрибут Version, десяткове ціле, ідентифікує, якій версії специфікації відповідає cookie. Для даної специфікації застосовується Version=1.



Приклад заголовка відповіді Set-cookie:

Set-cookie: sessionid=678893467800; path=/; domain=.mydomain.com
Set-cookie: lang=ru

Синтаксис REQUEST Header (Cookie)[ред.ред. код]

  cookie          =       "Cookie:" cookie-version
                          1*((";" | ",") cookie-value)
  cookie-value    =       NAME "=" VALUE [";" path] [";" domain]
  cookie-version  =       "$version" "=" value
  NAME            =       attr
  VALUE           =       value
  path            =       "$path" "=" value
  domain          =       "$domain" "=" value


Приклад заголовка запиту Cookie:

Cookie: sessionid=678893467800; lang=it

Недоторканність приватного життя — Конфіденційність[ред.ред. код]

Примітки[ред.ред. код]

Посилання[ред.ред. код]