Набор файлов cookie для поддоменов

Я просмотрел много вопросов о файлах cookie, но не нашел ответа на свою проблему. У меня есть следующий сценарий:

Пользователь создает логин на example.com и должен получить cookie-файл, но только для субдомена fuu.example.com. Я генерирую следующую часть заголовка HTTP:

Set-Cookie: name=TestUser; Domain=fuu.example.com; Path=/; secure; HttpOnly 

Но когда я отправляю запрос на https://fuu.example.com/, файл cookie не будет добавлен в запрос. Интересно, возможно ли, чтобы example.com установил cookie для fuu.example.com, Я знаю, что возможно, что example.com установил cookie для .example.com также для всех поддоменов для example.com, но это не то, что я хочу.

Как мне установить cookie для субдомена? Я не вижу cookie в запросе к поддомену.

3 ответа

Решение

Нет. Кроме того fuu.example.com недопустимое значение домена (оно должно начинаться с . т.е. .fuu.example.com) (см. обновление ниже) cookie будет отклонен:

Чтобы предотвратить возможные нарушения безопасности или конфиденциальности, пользовательский агент отклоняет cookie-файл (не хранит его информацию), если выполнено любое из следующих действий:

  • Хост-запрос представляет собой полное доменное имя (не IP-адрес) и имеет форму HD, где D - это значение атрибута домена, а H - строка, содержащая одну или несколько точек.

Запрос-хост example.com и значение атрибута домена foo.example.com, Но запрос-хозяин example.com не имеет форму HD, где D будет foo.example.com, Таким образом, cookie отклоняется.


Обновление Текущая спецификация RFC 6265, которая является устаревшей RFC 2109, которая приведена выше, игнорирует начальную точку. Но эффективный домен обрабатывается так же:

[…] Если значение атрибута Domain равно " example.com "пользовательский агент будет включать cookie в заголовок Cookie при отправке HTTP-запросов на example.com, www.example.com и www.corp.example.com. (Обратите внимание, что ведущий% x2E (" . "), если присутствует, игнорируется, даже если этот символ не разрешен, но завершающий% x2E (" . "), если присутствует, заставит пользовательский агент игнорировать атрибут.)

[…] Пользовательский агент примет файл cookie с атрибутом домена " example.com "или из" foo.example.com "от foo.example.com, но пользовательский агент не примет файл cookie с атрибутом домена" bar.example.com "или из" baz.foo.example.com ".

2 домена example.com а также foo.example.com может делиться куки, только если домен явно указан в заголовке Set-Cookie. В противном случае область действия cookie ограничивается узлом запроса.

Например, если вы отправили следующий заголовок из foo.example.com:

Set-Cookie: name=value

Тогда куки не будут отправлены на запросы example.com, Однако, если вы используете следующее, оно будет использоваться на обоих доменах:

Set-Cookie: name=value; domain=example.com

В RFC 2109 домен без начальной точки означал, что его нельзя использовать на поддоменах, а только с начальной точкой (.example.com) позволит использовать его во всех поддоменах.

Однако современные браузеры уважают более новую спецификацию RFC 6265 и игнорируют любую начальную точку, что означает, что вы можете использовать cookie на поддоменах, а также доменах верхнего уровня.

В итоге, если вы установите cookie, как во втором примере выше, example.comбыло бы доступно foo.example.com, и наоборот.

Для получения более подробной информации: /questions/18185708/obmen-cookie-mezhdu-poddomenom-i-domenom/18185727#18185727

На самом деле, существует простой и полностью кроссбраузерный способ обмена файлами cookie между исходным доменом и поддоменами, но вы должны поделиться им при установке времени, для комфортной работы с файлами cookie в браузере, который я использую js-cookie а с помощью следующего файла cookie он может использоваться как исходным доменом, так и всеми его поддоменами:

      Cookie.set('key', 'value', { domain: '.domain.com' })

// a . added before domain name

Подсказка : добавление этого . поделится файлом cookie со всем поддоменом.

Другие вопросы по тегам