Я просто не могу поверить, что это так трудно определить.
Даже прочитав RFC, мне не ясно, может ли сервер на subdomain.example.com установить cookie, который может быть прочитан example.com.
subdomain.example.com может установить cookie, атрибут домена которого .example.com. RFC 2965 явно заявляет, что такой cookie-файл не будет отправляться на example.com, но в то же время говорит, что если вы зададите Domain = example.com, то будет добавлена точка, как если бы вы сказали .example.com. Взятые вместе, это, кажется, говорит о том, что, если example.com возвращает, устанавливает cookie с Domain = example.com, он не возвращает этот cookie обратно! Это не может быть правдой.
Кто-нибудь может уточнить, что на самом деле правила?
Ответы:
Цитируя тот же RFC2109, вы читаете:
Так что
subdomain.example.com
можете установить cookie для.example.com
. Все идет нормально.Так у нас есть совпадение доменов?
Но теперь
example.com
не соответствует домену в.example.com
соответствии с определением. Ноwww.example.com
(или любое другое «непустое имя» в домене) будет. Этот RFC теоретически устарел в RFC2965 , который продиктовал вещи, заставляющие лидирующую точку для доменов вSet-Cookie2
операциях.Более важным, как отмечает @Tony, является реальный мир. Чтобы увидеть, что делают реальные пользовательские агенты, см.
а также
Для перспективы в то , что фактические сайты делают, пытаются играть с
wget
помощью--save-cookies
,--load-cookies
и--debug
посмотреть , что происходит.Вы, вероятно, обнаружите, что на самом деле большинство сайтов используют некоторую комбинацию
Set-Cookie
из старой спецификации RFC со значениями «Host», неявно без ведущей точки (как это делает twitter.com ) или установки значений домена (с ведущей точкой) и перенаправления на сервер, какwww.example.com
(как это делает google.com ).источник
y.z
и (2) пользовательский агент реализует RFC 6265.Если браузер реализует RFC 6265 , что должен делать любой современный браузер, тогда для установленного файла cookie
.example.com
будет игнорироваться начальная точка (раздел 5.2.3), а затем этот файл cookie будет отправлен в открытый домен и всем субдомены.Не полагайтесь на это, если у вас есть значительный трафик из старых браузеров; этот RFC относится только к 2011 году.
источник
Это не должно быть возможно. Однако, как вы сказали, поскольку этот стандарт не является широко документированным, он зависит от того, какое программное обеспечение вы используете.
Большинство современных браузеров придерживаются определенной «модели веб-безопасности». Модель эффективно управляет поведением браузеров в отношении безопасности, таких как cookie-файлы (особенно то, как они будут отправлены обратно на любой веб-сайт). В модели также есть правило, что «браузеры не отправляют куки на доменные имена, которые их не устанавливают».
При этом домен domain.com должен иметь возможность устанавливать файлы cookie для js.domain.com. Однако js.domain.com может устанавливать файлы cookie только для себя. Но это все зависит от того, какой браузер вы используете.
источник