Сервер может указать любое количество файлов cookie, и каждый файл cookie указан в своем собственном заголовке Set-Cookie
.
Каждый заголовок Set-Cookie
содержит хотя бы пару CookieName=CookieValue
и может содержать другие пары key=value
в дополнение к атрибуту secure
или httpOnly
. Эти дополнительные пары и атрибуты являются метаданными, относящимися к фактическому куки-файлу, и их нельзя использовать для установки дополнительных куки-файлов.
Когда клиент отправляет куки обратно на сервер, он объединяет их все в один заголовок Cookie
. Это возможно, потому что клиент никогда не отправляет метаданные обратно, только имя и значение файла cookie.
Рассмотрим этот обмен HTTP:
GET / HTTP/1.1
Host: www.example.com
HTTP/1.1 302 Found
Location: http://www.example.com/index.html
Set-Cookie: UserID=12345; Expires=Wed, 09 Jun 2021 10:18:14 GMT; domain=.example.com;path=/index.html; httpOnly`
Set-Cookie: SessionID=6478; domain=.example.com;path=/index.html; httpOnly
Set-Cookie: foo=bar
GET /index.html HTTP/1.1
Host: www.example.com
Cookie: UserID=12345; SessionID=6478; foo=bar