Когда веб-сервер отвечает на запрос ресурса, он может включить в свой ответ заголовок Set-Cookie
. Этот заголовок указывает браузеру на необходимость сохранения cookie-файла. Например: Set-Cookie:cat=tabby
. В разделе «Что такое cookie-файлы? » объясняется, как они работают.
Помимо указания имени и значения cookie-файла, Set-Cookie
может включать атрибуты, управляющие установкой cookie-файлов и сроком их действия. Атрибуты cookie-файлов разделяются точкой с запятой. Например:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
В этом документе объясняются наиболее важные атрибуты файлов cookie:
Использование HTTP-cookie-файлов объясняет атрибуты cookie-файлов более подробно.
Безопасный
Если заголовок Set-Cookie
содержит ключевое Secure
, файл cookie будет включаться только в зашифрованные запросы, использующие протокол HTTPS. В HTTP-запросы файл cookie не включается. Это может помочь предотвратить атаки через посредников , когда злоумышленник тайно вмешивается в обмен данными между браузером и сервером, чтобы передать информацию и потенциально изменить её.
HTTPOnly
Если заголовок Set-Cookie
включает HTTPOnly
, JavaScript не может получить доступ к файлу cookie, например, с помощью document.cookie
. Это помогает защититься от определённых типов атак, нацеленных на файлы cookie.
SameSite
Запрос ресурса с сайта, отличного от того, который вы посещаете, называется межсайтовым запросом. Файл cookie, устанавливаемый в ответ на межсайтовый запрос, называется сторонним файлом cookie .
Атрибут SameSite
определяет, будет ли сторонний cookie-файл включен в запрос. Он имеет три возможных значения: Strict
, Lax
или None
.
Узнайте больше: Что такое сторонние файлы cookie?
Строгий
Файл 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 иногда называют сеансовыми .
Домен
Если заголовок 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
Путь
Если атрибут Path
включен в заголовок ответа Set-Cookie
, то устанавливаемый 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 DevTools
- Инструмент анализа конфиденциальной песочницы
Узнать больше
- Рецепты печенья от первых лиц
- Что такое файлы cookie?
- Что такое сторонние файлы cookie?
- HTTP-запрос и ответ
- Инструменты для работы с файлами cookie
- Демо-версии файлов cookie
- Использование HTTP-куки
- Объяснение файлов cookie SameSite
- OWASP: Файлы cookie