Я уже некоторое время занимаюсь исследованием файлов cookie в Джанго.
Однако я не понимаю следующее.
Значение по умолчанию в django для SESSION_COOKIE_DOMAIN равно None
, поэтому атрибут домена будет пустым.
Django устанавливает cookie сессии в промежуточном программном обеспечении :
response.set_cookie(
# ...
domain=settings.SESSION_COOKIE_DOMAIN,
)
Функция set_cookie из объекта ответа имеет следующую соответствующую часть , если доменом является None
, который является настройкой по умолчанию в Django:
if domain is not None:
self.cookies[key]['domain'] = domain
Следовательно, я предполагаю, что домен в заголовке cookie не указан.
Я прочитал эту замечательную статью о файлах cookie , и пользователь 2864740 сделал хороший вывод об этом :
"Если в файле cookie не указан домен, файл cookie должен соответствовать только точному имени хоста запроса.
Нет поддоменов, нет частичных совпадений.
Это означает, что просто не включается атрибут домена - недопустимо устанавливать пустой атрибут домена. "
1.) Почему cookie все еще работает, если недопустимо оставлять атрибут домена пустым или я что-то здесь не так понял?
2.) Предположим, у меня есть домен example.com
Я не изменяю настройки по умолчанию для django, поэтому SESSION_COOKIE_DOMAIN равно None
Если я проверяю файлы cookie для домена example.com , я вижу следующее:
- Имя: sessionid
- Значение: XXXXXX
- Хост: example.com
Я думал, что установка домена cookie без предшествующей точки недопустима. Почему Django не использует .example.com ?
Это в основном то же самое, если домен cookie example.com , потому что он будет вести себя так же, как и с предыдущей точкой?
3.) Правильно ли я понял, что если я установлю файл cookie на example.com (без www) , файл cookie также будет доступен во всех поддоменах, и в настоящее время его нет можно установить cookie только на основном домене, который недоступен на поддоменах.