Що означає префікс крапки в домені cookie?


93

введіть тут опис зображення

У чому різниця між local.test.comі .local.test.com? Скріншот зроблено з Chrome.




У коментарі від користувача2864740 26 вересня 2016 року о 16:44 - Посилання мертве, очевидно домен erik.io передано іншому користувачеві або реєстратору домену.
qxotk

Відповіді:


58

local.test.comбуде використовуватися для домену, тоді як .local.test.comбуде використовуватися і для субдоменів.


11
Тож local.test.comне стосуватиметься x.local.test.com, але .local.test.comстосується як до, так local.test.comі до x.local.test.com?
ripper234

29
Я вважаю, що це неправильно. Файли cookie спільно використовуються з будь-якими та всіма нижчими субдоменами, з крапкою або без неї. Ви можете думати про субдомени як про «успадкування» файлів 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"), а надсилатиметься до відповідних субдоменів, лише якщо ви встановите значення домену.
Трійко

4
@Triynko, крапка робить різницю, коли ти хочеш оновити файл cookie. Мені не вдалося відокремити всі правила, але я бачив, як результати варіюються залежно від наявності провідної крапки чи ні, і це не прямо вперед. Те, як це працює, залежить від браузера і не все інтуїтивно. Керування тим, чи має ім’я cookie провідну крапку в браузері, - не найпростіше завдання програмування, яке я коли-небудь робив.
DanAllen

83

Крапкова крапка означає, що файл cookie діє також для субдоменів; Проте останні специфікації HTTP (RFC 6265) змінили це правило, тому сучасні браузери не повинні дбати про головну крапку. Крапка може знадобитися старому браузеру, що реалізує застарілий RFC 2109.

RFC 6265, розділ 4.1.2.3

Наприклад, якщо значенням атрибута Домену є "example.com", агент користувача буде включати файл cookie в заголовок Cookie під час надсилання HTTP-запитів до example.com, www.example.com та www.corp.example. ком. (Зверніть увагу, що початковий% x2E ("."), Якщо він присутній, ігнорується, хоча цей символ не дозволений, але кінцевий% x2E ("."), Якщо він присутній, призведе до того, що агент користувача ігнорує атрибут. )


1
RFC датований квітнем 2011 р. І IE8, і IE9 спочатку були випущені до цієї дати і - на жаль, досі використовуються. Тож я найкраще здогадуюсь (не намагався), що їм потрібна провідна крапка. Хтось знає підрахунки, скільки браузерів у дикій природі все ще працює на старому RFC?
BlaM

erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains рекомендує використовувати провідну крапку для найкращої сумісності, коли бажаєте включити субдомени. Ця вимога щодо сумісності буде лише зменшуватися. (Не потрібно для 6255, але обов’язково і з тим самим кінцевим результатом, що і для 2109.)
user2864740

12

Із статті Остаточний посібник із доменів cookie та чому префікс www робить ваш веб-сайт безпечнішим :

Висновок

Хоча визначення дещо відрізняються, ми можемо спростити його для будь-якої з цих реалізацій, як:

  • Якщо в файлі 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 домени явно розташовані на нижньому регістрі.


1

Провідна точка в ".local.test.com" - це те, як chrome переглядає файли cookie з набором "Domain = local.test.com" (або "Domain = .local.test.com", що є однаковим).

Визначення Set-Cookie без "Домен = щось" переглядає домен (= хост) без провідних крапок.

Отже, провідна крапка в chrome не відображає, чи була використана провідна крапка із сервера, але чи було в цьому файлі cookie "Домен = щось" у визначенні від сервера. (І якби це було, файл cookie також буде надісланий до субдоменів).

Принаймні так показують мої тести. Chrome повинен полегшити читання, наприклад, переглянути точний рядок, який визначав файл cookie та час його отримання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.