BCD tables only load in the browser
HTTP заголовок Set-Cookie
используется для отправки cookies с сервера на агент пользователя.
Для детальной информации, смотрите руководство по HTTP cookies.
Тип заголовка | Response header |
---|---|
Forbidden header name | нет |
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
- По умолчанию - хост текущего URL документа, не включая поддомены
- В текущей спецификация начальная точка в имени хоста игнорируется (
.example.com
) - Cookie будут отправляться также на поддомены указанного хоста
- Указывать несколько хостов недопустимо.
- По умолчанию - хост текущего URL документа, не включая поддомены
- В текущей спецификация начальная точка в имени хоста игнорируется (.example.com)
- Cookie будут отправляться также на поддомены указанного хоста
- Указывать несколько хостов недопустимо.
<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-
должны быть установлены с флагом securesecure
, должны быть с безопасной страницы (HTTPS), не должны иметь определенный домен (и, следовательно, не не посылаются поддоменами), а также параметр Path должен быть "/".
Expires=<date>
Необязательный-
Максимальное время жизни cookie в формате метки даты-времени HTTP. См.
Date
о деталях формата Если не определен, cookie будет иметь время жизни сессионного cookie. Сессия окончена, когда клиент отключается, что приводит к удалению сессионных cookie в этот момент. Однако, многие браузеры имеют возможность, называемую восстановление сессии, которая сохраняет все ваши вкладки и затем возвращает их, когда вы в следующий раз запускаете браузер. Cookies будут также присутствовать, словно вы никогда не закрывали браузер.Когда установливается срок действия, время и дата устанавливаются не относитеьно сервера, а относительно клиента, на котором установлено cookie,
Max-Age=<number>
Необязательный- Количество секунд, после которого cookie устаревает. Ноль или отрицательное число приводят к моментальному устареванию cookie. Старые браузеры (ie6, ie7, and ie8) не поддерживают Max-Age. Для прочих браузеров, если оба параметра (
Expires
andMax-Age
) установлены,Max-Age
будет иметь преимущество. Domain=<domain-value>
Необязательный- Хост, на который будут отправляться cookie.
По умолчанию - хост текущего URL документа, не включая поддомены
В текущей спецификация начальная точка в имени хоста игнорируется (.example.com)
Cookie будут отправляться также на поддомены указанного хоста
Указывать несколько хостов недопустимо. Path=<path-value>
Необязательный- Путь, который должен существовать в запрошенном URL, иначе браузер не отправит заголовок Cookie.
- Пример:
/
- cookie будет отправляться со всеми запросами
Пример:/docs/
- cookie будет отправляться с запросами к директории docs и ее поддиректориям Secure
Необязательный- Cookie будет отправлен на сервер только с запросами c использованием SSL и протокола HTTPS.
Cookie не будет дополнительно шифроваться, поэтому в нем не стоит хранить конфиденциальную инфомрацию. -
Note: небезопасные сайты (
http:
) не могут использовать cookie с атрибутом "secure" (начиная с Chrome 52+ и Firefox 52+). HttpOnly
Необязательный- Запрещает JavaScript доступ к cookie
- Полезно для защиы от XSS-атак.
SameSite=<samesite-value>
Необязательный
Strict
: The browser sends the cookie only for same-site requests (that is, requests originating from the same site that set the cookie). If the request originated from a different URL than the current one, no cookies with theSameSite=Strict
attribute are sent.Lax
: The cookie is withheld on cross-site subrequests, such as calls to load images or frames, but is sent when a user navigates to the URL from an external site, such as by following a linkNone
: The browser sends the cookie with both cross-site and same-site requests
-
Allows servers to assert that a cookie ought not to be sent along with cross-site requests, which provides some protection against cross-site request forgery attacks (CSRF).
Современные браузеры используют
SameSite=Lax
. Если необходима работаSameSite=
None
cookie должна быть установлена с атрибутомSecure
.
Сессионные cookies будут удалены после отключения клиента. В них не указываются директивы Expires
или Max-Age
. Учитывайте, что часто в браузере включено восстановление сессии.
Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/
Вместо истечения срока действия, когда клиент закрыт, срок действия постоянных файлов cookie истекает в определенную дату (Expires
) или по истечении определенного промежутка времени (Max-Age
).
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
Файл cookie, принадлежащий домену, который не включает исходный сервер, должен быть отклонен пользовательским. Следующий cookie будет отклонен, если он был установлен сервером, размещенным на originalcompany.com.
Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk; Path=/; Expires=Wed, 30 Aug 2019 00:00:00 GMT
Cookies names with the prefixes __Secure-
and __Host-
can be used only if they are set with the secure
directive from a secure (HTTPS) origin. In addition, cookies with the __Host-
prefix must have a path of "/" (the entire host) and must not have a domain attribute. For clients that don't implement cookie prefixes, you cannot count on having these additional assurances and the cookies will always be accepted.
// 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
Specification | Title |
---|---|
RFC 6265, секция 4.1: Set-Cookie | HTTP State Management Mechanism |
draft-ietf-httpbis-rfc6265bis-02 | Cookie Prefixes, Same-Site Cookies, and Strict Secure Cookies |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
- Starting with Chrome 52 and Firefox 52, insecure sites (
http:
) can't set cookies with the "secure" directive anymore.