Могу ли я получить cookie только из домена второго уровня? - PullRequest
6 голосов
/ 25 августа 2010

Существует два домена: 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 , чтобы читать cookie с именем test_cookie , которая: a,когда есть 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 c.если нет файла cookie: test_cookie под exampler.com , но есть файл cookie test_cookie под доменом a.example.com , readCookieвозвращает значение cookie в домене a.example.com .

Ответы [ 2 ]

11 голосов
/ 25 августа 2010

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

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

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

  • , если либо домены идентичны (в случае отсутствия параметра 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 , либо задаете атрибут Domain с .a.example.com (который сделает файл cookie действительным для a.example.com и его поддоменов).

3 голосов
/ 25 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...