Могу ли я получить cookie только из домена второго уровня?

Есть два домена: example.com. Теперь и a.example.com, и example.com могут написать cookie с именем test_cookie. Теперь у нас есть страница ...

Есть два домена: example.com. Теперь и a.example.com, и example.com могут написать cookie с именем test_cookie. Теперь у нас есть страница ...

Есть два домена: a.example.com example.com

example.com является родительским доменом a.example.com . Теперь и a.example.com и example.com могут написать cookie с именем test_cookie . Теперь у нас есть страница a.example.com , которая будет использовать JavaScript для чтения значения cookie test_cookie . Есть ли способ, который читает только файлы cookie, установленные в домене a.example.com , а не example.com ?


Может быть, мой вопрос был немного неясен,

цель, которую я хочу достичь: 1. Я хочу написать функцию с именем readCookie для чтения куки с именем test_cookie , которая: а. когда есть cookie: test_cookie в домене example.com и НЕТ cookie test_cookie в домене a.example.com , readCookie возвращает ноль б. когда есть cookie: test_cookie в домене example.com И ТАКЖЕ cookie test_cookie в домене a.example.com , readCookie возвращает значение cookie в домене a.example.com с. когда нет файла cookie: test_cookie в exampler.com , но в домене a.example.com , readCookie, есть файл cookie test_cookie возвращает значение cookie в домене a.example.com .

7
задан 徐明明 25 August 2010 в 16:23
поделиться

2 ответа

Это зависит от того, как был определен файл cookie, особенно если для атрибута Домен указано, какие значения он имеет (см. RFC 2965 – Роль агента пользователя):

  • if Атрибут Domain отсутствует, пользовательский агент предполагает текущий хост; в противном случае
  • если установлен атрибут Домен, его значение должно начинаться с . , например .example.com (если нет, например, example.com, пользовательский агент изменит его на .example.com).

Теперь домен файла cookie должен соответствовать домену домена, который будет отправлен в запросе. И это так:

  • если либо домены идентичны (в случае отсутствия параметра Domain), либо
  • если значение, указанное в атрибуте Domain, должно быть суффиксом домена.

Это означает:

 effective domain | example.com | a.example.com | foo.example.com | bar.a.example.com
------------------+-------------+---------------+-----------------+-------------------
      example.com |      ✓      |      ✗        |        ✗        |         ✗
    a.example.com |      ✗      |      ✓        |        ✗        |         ✗
     .example.com |      ✓      |      ✓        |        ✓        |         ✓
   .a.example.com |      ✗      |      ✓        |        ✗        |         ✓

Таким образом, если вы хотите, чтобы файл cookie был действителен только для a.example.com, вы либо опускаете атрибут Домен, либо указываете . Атрибут ]Domain с атрибутом .a.example.com (это сделает файл cookie действительным для a.example.com и его поддоменов).

12
ответ дан 6 December 2019 в 13:59
поделиться

Невозможно ограничить файл cookie example.com – только путем установки параметра domain. Однако в большинстве браузеров файл cookie по умолчанию будет иметь значение example.com — только если не указан домен. К сожалению, в IE по умолчанию разрешен доступ поддоменов к файлу cookie.

Вот почему вы размещаете свой основной сайт по адресу www.example.com, а не только example.com. С сайтом в основном домене example.com вы не можете надежно хранить свои файлы cookie отдельно.

3
ответ дан 6 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: