Установить куки (Set-Cookie)
Синтаксис:
Set-Cookie: <cookie-name>=<cookie-value>
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
Set-Cookie: <cookie-name>=<cookie-value>; Secure
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Strict
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Lax
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=None
// Multiple directives are also possible, for example:
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
<cookie-name>=<cookie-value>
Cookie начинается с пары имя-значение:
- <cookie-name> может содержать любые символы US-ASCII, за исключением управляющих символов (CTLs), пробелов, или табуляций. Оно также не должно содержать разделительнных символов, таких как следующие: ( ) < > @ , ; : \ » / [ ] ? = { }.
- <cookie-value> может быть опционально заключено в двойные кавычки, разрешены любые символы US-ASCII за исключением CTLs, пробела, двойных кавычек, запятой, точки с запятой, и обратного слэша. Кодирование: Многие реализации выполняют кодирование в значениях cookies, однако этого не требуется по спецификации RFC. Однако, это помогает удовлетворить требование о разрешенных символах в <cookie-value>.
- __Secure- prefix: Cookies с именем, начинающимся с __Secure- (подчеркивание является частью префикса ) должны быть установлены вместе с флагом secure, и должны быть с безопасной страницы (HTTPS).
- __Host- prefix : Cookies с именем, начинающимся с __Host- должны быть установлены с флагом secure secure, должны быть с безопасной страницы (HTTPS), не должны иметь определенный домен (и, следовательно, не не посылаются поддоменами), а также параметр Path должен быть «/».
Expires=<date> Необязательный
Максимальное время жизни cookie в формате метки даты-времени HTTP. См. Date о деталях формата Если не определен, cookie будет иметь время жизни сессионного cookie. Сессия окончена, когда клиент отключается, что приводит к удалению сессионных cookie в этот момент. Однако, многие браузеры имеют возможность, называемую восстановление сессии, которая сохраняет все ваши вкладки и затем возвращает их, когда вы в следующий раз запускаете браузер. Cookies будут также присутствовать, словно вы никогда не закрывали браузер.
Когда установливается срок действия, время и дата устанавливаются не относитеьно сервера, а относительно клиента, на котором установлено cookie.
Max-Age=<number> Необязательный
Количество секунд, после которого cookie устаревает. Ноль или отрицательное число приводят к устареванию куки не медленно. Старые браузеры (ie6, ie7, and ie8) не поддерживают max-age. Для прочих браузеров, если оба параметра (Expires and Max-Age) установлены, Max-Age будет иметь преимущество.
Domain=<domain-value> Необязательный
Указываются те хосты, на которые будут отправлятся куки. По умолчанию используется хост текущего местоположения (но не включая поддоменов). В отличие от более ранних спецификаций, начальные точки в доменных именах игнорируются. Если указан домен, субдомены всегда включены.
Path=<path-value> Необязательный
Указывает URL-путь, который должен существовать в запрашиваемом ресурсе перед отправкой заголовка Cookie. Символ %x2F («/») интерпретируется как разделитель каталогов, и подкаталоги также будут сопоставляться (например, path=/docs, «/docs», «/docs/Web/» или «/docs/Web/HTTP» все будет сопоставлено).
Secure Необязательный
Безопасный файл cookie отправляется на сервер только тогда, когда запрос сделан с использованием SSL и протокола HTTPS. Однако конфиденциальная или конфиденциальная информация никогда не должна храниться или передаваться в файлах cookie HTTP, поскольку весь механизм по своей природе небезопасен, и это не означает, что любая информация, например, зашифрована.
HttpOnly Необязательный
Куки только для HTTP не доступны через JavaScript через свойство Document.cookie, API XMLHttpRequest или API запросов для предотвращения атак на межсайтовый скриптинг (XSS).
SameSite=<samesite-value> Необязательный
- Strict
- Lax
- None
Позволяет серверам утверждать, что cookie не следует отправлять вместе с межсайтовыми запросами, что обеспечивает некоторую защиту от атак подделки межсайтовых запросов (CSRF).
Примеры:
Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk; Path=/; Expires=Wed, 30 Aug 2019 00:00:00 GMT
// Both accepted when from a secure origin (HTTPS)
Set-Cookie: __Secure-ID=123; Secure; Domain=example.com
Set-Cookie: __Host-ID=123; Secure; Path=/
// Rejected due to missing Secure directive
Set-Cookie: __Secure-id=1
// Rejected due to the missing Path=/ directive
Set-Cookie: __Host-id=1; Secure
// Rejected due to setting a domain
Set-Cookie: __Host-id=1; Secure; Path=/; domain=example.com
Источник: https://developer.mozilla.org/ru/docs/Web/HTTP/Заголовки/Set-Cookie