Когда веб-сервер отвечает на запрос ресурса, он может включить в свой ответ заголовок Set-Cookie . Этот заголовок сообщает вашему браузеру о необходимости сохранить cookie-файл.
Например: Set-Cookie:cat=tabby .
Помимо указания имени и значения cookie-файла, Set-Cookie может включать атрибуты, определяющие, будут ли установлены cookie-файлы и когда истечет их срок действия. Атрибуты cookie-файлов разделяются точками с запятой. Например:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
В этом документе объясняются наиболее важные атрибуты файлов cookie:
Использование HTTP-куки объясняет атрибуты куки более подробно с технической точки зрения.
Безопасный
Если заголовок Set-Cookie включает Secure , cookie будет включен только в зашифрованные запросы, использующие протокол HTTPS: cookie не будет включен в HTTP-запросы. Это может помочь предотвратить атаки через посредников , когда злоумышленник тайно вмешивается в обмен данными между браузером и сервером, чтобы передать информацию и потенциально изменить её.
Только HTTP
Если заголовок Set-Cookie содержит HTTPOnly , JavaScript не сможет получить доступ к cookie-файлу, например, с помощью document.cookie . Это помогает защититься от определенных типов атак, направленных на cookie-файлы.
SameSite
Запрос ресурса с сайта, отличного от сайта, который вы посещаете, называется межсайтовым запросом. Файл cookie, установленный в ответ на межсайтовый запрос, называется сторонним файлом cookie .
Атрибут SameSite определяет, будет ли в запрос включен сторонний cookie-файл. Он имеет три возможных значения: Strict , Lax или None .
Узнайте больше: Что такое сторонние файлы cookie?
Строгий
Файл cookie будет отправлен только в ответ на запросы со страницы, находящейся на исходном сайте, для которого он был создан. Например: представьте, что пользователь посещает cats.example , и у него установлен файл cookie с атрибутом SameSite=Strict . Позже пользователь переходит на другой сайт и переходит по ссылке на страницу cats.example . Установленный файл cookie не будет включен в этот запрос.
Лакс
Это работает так же, как и в Strict , за исключением того, что браузер также будет включать cookie, когда пользователь переходит по ссылке на сайт, откуда этот cookie был получен. (В предыдущем примере Strict cookie включался , когда пользователь переходил по ссылке на cats.example .) Lax используется по умолчанию, если в заголовке Set-Cookie не указан атрибут SameSite .
Никто
Никаких ограничений: cookie будет включен в запрос, независимо от того, является ли он межсайтовым или нет. При SameSite=None cookie также должен иметь атрибут Secure .
Разделенный
Этот атрибут позволяет включить использование cookie-файла для разделенного хранения данных , с отдельным "хранилищем cookie-файлов" для каждого сайта верхнего уровня. Cookie-файл имеет двойной ключ: от сайта верхнего уровня до домена, который его установил.
Например: представьте, что веб-сайт A и веб-сайт B содержат iframe с веб-сайта C. Разделенный cookie, установленный iframe на веб-сайте A, недоступен для iframe на веб-сайте B: cookie AC отделен от cookie BC.

Файлы cookie с атрибутом Partitioned называются CHIPS: файлы cookie, имеющие независимое разделенное состояние.
Разделенные файлы cookie должны иметь атрибут Secure .
Узнайте больше: Файлы cookie с независимым разделенным состоянием .
Срок действия и максимальный возраст
Вы можете указать дату и время Expires или Max-Age в секундах, по истечении которого cookie-файл должен быть удален и больше не отправляться. Например:
-
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT; -
Set-Cookie:cat=tabby; Max-Age=86400
Если не указать атрибуты Max-Age или Expires , cookie будет удален по завершении текущей сессии. Такой cookie иногда называют сессионным cookie .
Домен
Если заголовок Set-Cookie содержит атрибут Domain , то cookie будет включен в запросы к указанному домену и любым его поддоменам.
Если заголовок Set-Cookie не содержит атрибута Domain , cookie не будет включен в запросы к поддоменам.
Иными словами, включение атрибута Domain снижает ограничения, связанные с доменами.
Например, ответ с сайта cats.example :
-
Set-Cookie:cat=tabby
Файл cookie будет использоваться только при запросах кcats.example -
Set-Cookie:cat=tabby; Domain=cats.example
Файл cookie будет включен в запросы кcats.example, а также в любые запросы к ресурсам на поддоменах, таких какfluffy.cats.exampleилиuser.assets.cats.example
Путь
Если в заголовке ответа Set-Cookie присутствует атрибут Path , то установленный cookie будет включаться только в запросы к URL-адресам (на сайте, который установил cookie!), которые соответствуют значению Path .
Например:
-
Set-Cookie:cat=tabby; Path=/articles
Файл cookie будет включен в запрос к любому URL-адресу, начинающемуся с/articles:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html -
Set-Cookie:cat=tabby; Path=/
Все запросы к любому URL-адресу на сайте будут содержать cookie-файл.
Если в заголовке ответа Set-Cookie отсутствует значение Path , cookie будет включен только в запросы к тому же каталогу. Например, представьте, что cookie cat=tabby устанавливается в ответ на запрос cats.example/images/tabby.jpg. Если Path не указан, cookie будет включен только в запросы к файлам, находящимся в каталоге cats.example/images .
Демонстрации
- 1pc.glitch.me : демонстрация использования файлов cookie от первого лица
- 3pc.glitch.me : демонстрация сторонних файлов cookie
Инструменты
- Просмотр, добавление, редактирование и удаление файлов cookie в инструментах разработчика Chrome.
- Инструмент анализа конфиденциальности в песочнице
Узнать больше
- Рецепты печенья от первого лица
- Что такое печенье?
- Что такое сторонние файлы cookie?
- HTTP-запрос и ответ
- инструменты для работы с файлами cookie
- Демонстрация работы с печеньем
- Использование HTTP-куки
- Объяснение использования файлов cookie SameSite
- OWASP: Cookies