Подтвердить что ты не робот

Печенье домена для субдомена

Я просмотрел много вопросов о файлах 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 в запросе на субдомен.

4b9b3361

Ответ 1

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

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

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

Хост-запрос example.com, а значение атрибута домена foo.example.com. Но request-host 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 ( "." ), если он присутствует,    игнорируется, хотя этот символ не разрешен, но    trailing% x2E ( "." ), если присутствует, приведет к тому, что пользовательский агент игнорирует    атрибут.)

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

Ответ 2

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

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

Set-Cookie: name=value

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

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

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

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

В заключение, если вы установите cookie как второй пример выше из example.com, он будет доступен с помощью foo.example.com и наоборот.

Подробнее: fooobar.com/info/30865/...