Что такое файлы cookie? Что такое файлы 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-файл и сделать с этим значением все, что захочет, например, убедиться, что он больше не отправит вам изображение того же полосатого кота.

Вот весь процесс создания cookie:

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


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

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

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

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

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

Дополнительная информация: Документ: свойство cookie .

Зачем нам нужны куки?

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

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

Использование файлов cookie

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

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

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

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

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

Cookie: _cart=CART1.2.34567890.123456789

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

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