Приоритет файлов cookie? - PullRequest
       18

Приоритет файлов cookie?

5 голосов
/ 22 декабря 2009

У меня есть несколько сайтов. Каждый сайт является локализованной версией, обслуживающей контент, специфичный для данного набора локалей. Существует также всемирный или «глобальный» сайт. У меня они настроены следующим образом:

Я пытаюсь отслеживать активность каждого приложения с помощью файла cookie. Имя файла cookie для каждого сайта одинаковое и использует настройки домена по умолчанию (т.е. в .net я не указываю значение для httpCookie.Domain - я оставляю его по умолчанию).

Все отлично работает, когда я посещаю свои "специфичные для локали" сайты, но как только я захожу на "глобальный" сайт, кажется, что cookie с этого сайта используется, когда я возвращаюсь, чтобы посетить мои "специфичные для локали" сайты вместо файла cookie, выпущенного для сайта, ориентированного на локали.

Есть ли у вас идеи, как получить, чтобы мой "глобальный" cookie-файл имел приоритет над моими "локально-специфическими" cookie-файлами на сайтах, относящихся к локали?

Ответы [ 2 ]

8 голосов
/ 22 декабря 2009

В большинстве браузеров установка cookie без «домена» делает его только действительным для текущего имени хоста. В противном случае это не может быть достигнуто путем установки какого-либо значения в «домен»; если вам нужно именно такое поведение, вы должны пропустить параметр 'domain'.

Однако в IE любой файл cookie, который вы установили без «домена», получит неявный «домен» текущего имени хоста. Это означает, что если вы установите cookie на «example.com», вы не сможете остановить его отправку на «sub.example.com».

Поэтому у вас не может быть поддоменов, которые не разделяют часть контекста безопасности родительского домена. Если вы хотите сохранить поддомен отдельно от его родителя, вы должны (как предложил JustLoren) сделать основной сайт www.example.com, а не просто example.com.

Если допустимы два файла cookie с разными доменами, браузеры обычно отправляют их оба, поэтому вы можете ожидать document.cookie наподобие 'a=b; a=c'. Если ваш слой для чтения файлов cookie не ожидает нескольких файлов cookie с одним и тем же именем, один из них исчезнет (вы не сможете контролировать какой).

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

0 голосов
/ 17 февраля 2018

bobince прав насчет необычного поведения Internet Explorer. Обратите внимание, что Edge работает по-другому, больше похоже на FireFox (для этого аспекта).

Если вы не установили какие-либо свойства cookie, вы, вероятно, столкнетесь с проблемами с путем. В вашем случае свойство path=/ будет хорошим выбором.

Обратите внимание, что между браузерами существует множество различий в способах обработки файлов cookie. Если вам интересно, вы можете прочитать Как разные браузеры обрабатывают файлы cookie по-разному

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