Так local.test.comчто не будет применяться к x.local.test.com, но .local.test.comотносится и к, local.test.comи к x.local.test.com?
ripper234 08
29
Я считаю, что это неверно. Файлы cookie используются всеми подчиненными субдоменами с точкой или без нее. Вы можете думать о субдоменах как о «наследующих» куки от своих родительских. Таким образом, установка cookie на example.com устанавливает его на blog.example.com и my.blog.example.com. Установка файла cookie на blog.example.com устанавливает его на this.is.my.blog.example.com и на каждый промежуточный субдомен. Но, как и наследование, обратное неверно. Установка файла cookie на blog.example.com не приводит к его установке на example.com.
geddski
6
Тем не менее, вы МОЖЕТЕ ограничить cookie только хостом, не задавая домен cookie вообще (или установив пустую строку). Это, как ни странно, установит cookie только для хоста (example.com), а не для любого из его поддоменов.
geddski
8
Чтобы уточнить на основе другого ответа, раньше точка имела значение, но теперь это не так. Файл cookie будет отправлен в любой поддомен указанного домена с точкой в начале или без нее. Фактически контролирует, передается ли он субдоменам, так это то , устанавливаете ли вы домен в cookie или нет. Если вы вообще не указали домен, cookie будет отправлен только на тот домен, который его выпустил. Он никогда не будет отправлен в менее специфичные родительские домены (например, «local.test.com» не будет включен в запросы к «test.com»), и он будет отправлен только в соответствующие поддомены, если вы установите значение домена.
Трийнко 04
4
@Triynko, точка имеет значение, когда вы привязываете для обновления cookie. Мне не удалось выделить все правила, но я видел, что результаты различаются в зависимости от наличия или отсутствия ведущей точки, и это непросто. Как это работает, зависит от браузера и не всегда интуитивно понятно. Контроль того, есть ли в названии кухни начальная точка в браузере, - не самая простая задача программирования, которую я когда-либо делал.
DanAllen
83
Первая точка означает, что файл cookie также действителен для поддоменов; тем не менее последние спецификации HTTP (RFC 6265) изменили это правило, поэтому современные браузеры не должны заботиться о начальной точке. Точка может понадобиться старому браузеру, реализующему устаревший RFC 2109.
Например, если значение атрибута Domain - «example.com», пользовательский агент будет включать файл cookie в заголовок Cookie при выполнении HTTP-запросов к example.com, www.example.com и www.corp.example. com. (Обратите внимание, что начальный% x2E («.»), Если он присутствует, игнорируется, даже если этот символ не разрешен, но конечный% x2E («.»), Если он присутствует, заставит пользовательский агент игнорировать атрибут. )
RFC датирован апрелем 2011 года. И IE8, и IE9 изначально были выпущены до этой даты и, к сожалению, все еще используются. Итак, я предполагаю (не пробовал), что им нужна ведущая точка. Кто-нибудь знает, сколько браузеров все еще работают на старом RFC?
BlaM
erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains рекомендует использовать начальную точку для лучшей совместимости, когда вы хотите включить поддомены. Это требование совместимости будет только уменьшаться. (Не требуется для 6255, но требуется и с тем же конечным результатом, что и для 2109.)
Хотя определения несколько отличаются, мы можем упростить его для любой из этих реализаций следующим образом:
Если в файле cookie не установлен домен, файл cookie должен соответствовать только точному имени хоста запроса. [ПРИМЕЧАНИЕ: это отличается от возврата Set-Cookie с доменом без точки!] Нет поддоменов, нет частичных совпадений. Это означает, что просто не включать атрибут домена - нельзя устанавливать пустой атрибут домена. К сожалению, Internet Explorer, похоже, рассматривает это как имя хоста вместе с любыми поддоменами .
При настройке домена в cookie безопасный вариант - поставить перед ним точку, например .erik.io. Файл cookie будет соответствовать всем поддоменам.
Установка домена cookie без предшествующей точки, например erik.io, недопустима в реализациях RFC 2109 и приведет к тому же поведению, что и с предыдущей точкой в других реализациях. Невозможно ограничить cookie конкретным явно заданным доменом без включения поддоменов.
Другие заслуживающие внимания наблюдения:
Во всех RFC указанный домен cookie должен совпадать с текущим именем хоста при нормальном сопоставлении. Установка cookie для www.erik.io в ответе от erik.io недействительна, так как cookie с доменом www.erik.io не соответствует erik.io, первый более конкретен.
В RFC 6265 домены явно имеют нижний регистр при синтаксическом анализе заголовка Set-Cookie.
Первая точка в ".local.test.com" - это то, как Chrome просматривает файлы cookie с набором "Domain = local.test.com" (или "Domain = .local.test.com", что то же самое).
Определения Set-Cookie без "Domain = something" рассматривают домен (= хост) без начальной точки.
Таким образом, ведущая точка в chrome не отражает, использовалась ли ведущая точка с сервера, но имеет ли этот файл cookie в своем определении с сервера «Домен = что-то». (И если это так, файл cookie также будет отправлен в поддомены).
По крайней мере, это то, что показывают мои тесты. Chrome должен упростить чтение, например, просмотреть точную строку, которая определяет файл cookie и время его получения.
Ответы:
local.test.com
будет использоваться для домена, а.local.test.com
также для поддоменов.источник
local.test.com
что не будет применяться кx.local.test.com
, но.local.test.com
относится и к,local.test.com
и кx.local.test.com
?Первая точка означает, что файл cookie также действителен для поддоменов; тем не менее последние спецификации HTTP (RFC 6265) изменили это правило, поэтому современные браузеры не должны заботиться о начальной точке. Точка может понадобиться старому браузеру, реализующему устаревший RFC 2109.
RFC 6265 раздел 4.1.2.3
источник
Из статьи Полное руководство по доменам cookie и почему префикс www делает ваш сайт безопаснее :
источник
Первая точка в ".local.test.com" - это то, как Chrome просматривает файлы cookie с набором "Domain = local.test.com" (или "Domain = .local.test.com", что то же самое).
Определения Set-Cookie без "Domain = something" рассматривают домен (= хост) без начальной точки.
Таким образом, ведущая точка в chrome не отражает, использовалась ли ведущая точка с сервера, но имеет ли этот файл cookie в своем определении с сервера «Домен = что-то». (И если это так, файл cookie также будет отправлен в поддомены).
По крайней мере, это то, что показывают мои тесты. Chrome должен упростить чтение, например, просмотреть точную строку, которая определяет файл cookie и время его получения.
источник