Что такое файлы cookie? Что такое файлы cookie?

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

Однако забывчивость интернета также создает проблему. Например, как может работать корзина покупок, если веб-сайт, на котором вы находитесь, не может запомнить, что вы только что в нее внесли?

Печенье было изобретено для решения этой проблемы.

Файлы cookie предоставляют веб-сайтам память.

Когда вы посещаете страницу на веб-сайте, ваш веб-браузер отправляет запросы на сервер веб-сайта для получения ресурсов, содержащихся на странице, таких как HTML, CSS, JavaScript или изображения.

Веб-браузеры и веб-сайты взаимодействуют, следуя протоколу HTTP . Это стандартизированный набор правил для обмена данными.

В ответ на HTTP-запрос к ресурсу сервер веб-сайта может включать дополнительную информацию, называемую заголовками , вместе с самим ресурсом. Заголовок Set-Cookie , включенный в HTTP-ответ, сообщает вашему браузеру о необходимости сохранить некоторый текст: имя и значение. Это называется cookie-файлом. Например, заголовок ответа Set-Cookie: cat=tabby сообщает вашему браузеру о необходимости сохранить cookie-файл с именем "cat" и значением "tabby".

После установки этого cookie-файла последующие запросы из вашего браузера к веб-сайту будут включать заголовок Cookie: cat=tabby . Сервер веб-сайта может получить доступ к cookie-файлу из заголовка запроса и использовать его значение.

Как работают файлы cookie: пошаговая инструкция

Представьте, что вы зашли на сайт cats.example . Сайт хочет показать вам случайное изображение кошки и сохранить запись о том, какая именно кошка была вам показана.

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

1. Браузер запрашивает файл.

Вы переходите на главную страницу сайта cats.example .

После обработки HTML-кода главной страницы ваш браузер запрашивает файлы на странице, включая cat.jpg из cats.example .

HTTP-запрос к https://cats.example/cat.jpg

2. Сервер веб-сайта отвечает

Сервер по адресу cats.example отправляет в ответ файл изображения cat.jpg .

В ответ сервер добавляет заголовок: Set-Cookie: cat=tabby .

HTTP-ответ от https://cats.example/cat.jpg с заголовком Set-Cookie: cat=tabby

3. Браузер получает ответ

Ваш браузер получает файл изображения и обрабатывает заголовок Set-Cookie: cat=tabby , содержащийся в нём.

Сохранен cookie-файл: имя cat , значение tabby .

В веб-браузере на ноутбуке отображается cookie-файл cat=tabby.

4. Браузер отправляет дополнительные запросы.

С этого момента ваш браузер будет добавлять заголовок Cookie: cat=tabby к запросам, отправляемым на cats.example .

HTTP-запрос к https://cats.example/cat.jpg с заголовком Cookie: cat=tabby

Когда веб-сервер cats.example получает запрос, он может обработать cookie-файл и сделать с этим значением все, что захочет, — например, убедиться, что вам больше не будет отправлено изображение той же самой полосатой кошки.

Вот весь процесс приготовления печенья:

  1. Ваш браузер запрашивает файл с сервера веб-сайта.
  2. Сервер может добавить заголовок, например, Set-Cookie: cat=tabby , к файлу, отправляемому в ответ на запрос.
  3. Когда ваш браузер получает ответ, он сохраняет cookie-файл.
  4. При каждом последующем запросе ваш браузер отправляет cookie-файл на сервер в заголовке Cookie: cat=tabby .


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

Доступ к файлам cookie с помощью JavaScript

В предыдущем примере для установки cookie используется заголовок ответа Set-Cookie .

Файлы cookie также можно создавать с помощью JavaScript, используя метод document.cookie .

Попробуйте демо-версию: javascript-cookie.glitch.me .

Подробнее: Документ: свойство cookie .

Зачем нам нужны файлы cookie?

В 1994 году инженер Лу Монтулли работал в компании Netscape, которая впоследствии создала самый популярный веб-браузер середины 1990-х годов. Тем временем телекоммуникационная корпорация MCI пыталась создать корзину покупок для одного из первых в мире онлайн-магазинов. MCI связалась с Монтулли, чтобы объяснить свою проблему. Монтулли ответил, добавив в HTTP функцию, которая позволяла сайту сохранять небольшой текст в веб-браузере пользователя — имя и значение: что-то вроде cart-id=123 . Он назвал это «cookie», поскольку в те времена программисты использовали словосочетание «волшебный cookie» для обозначения небольшого фрагмента дополнительной информации, передаваемой вместе с данными.

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

Применение печенья

Файлы cookie позволяют браузеру хранить небольшой объем информации о пользователе, чтобы «запоминать» что-либо в ходе нескольких запросов. Файлы cookie имеют множество применений:

  • Управление сессиями
    Разрешите веб-сайту распознавать пользователя, например, для поддержания состояния авторизации на разных страницах.
  • Персонализация
    Сохраняйте пользовательские предпочтения, такие как язык, тема оформления или недавно просмотренные товары, чтобы персонализировать работу с сайтом.
  • Отслеживание
    Исторически сложилось так, что файлы cookie использовались для отслеживания поведения пользователей на разных веб-сайтах, для целевой рекламы и в других целях.

Файлы cookie используются в основном для идентификации, а не для непосредственного хранения информации.

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

Запрос к серверу зоомагазина может содержать заголовок cookie следующего вида:

Cookie: _cart=CART1.2.34567890.123456789

Затем сервер может найти учетную запись _cart в своем хранилище данных и добавить другую информацию о запросе.

Узнать больше