Как уже отмечался в комментариях по @solarissmoke это делается в обработчике WSGI, путем разбора заголовка куков (от атрибут environ['HTTP_COOKIES']
).
Обычными виновниками могут быть любые приложения, которые могут модифицировать запрос по пути от вашего http/proxy-сервера до промежуточного программного обеспечения django до вашего собственного кода просмотра.
Другая общая точка отказа при настройке файлов cookie на стороне клиента заключается в том, что стандартные куки-файлы являются специфичными для домена, а в браузерах есть настройки, позволяющие/запрещать установку файлов cookie за пределы текущего домена сервера (например, из объектов Response); или даже запретить любые файлы cookie. Вот the Google Chrome documentation о том, как управлять (и блокировать) файлы cookie на любой платформе.
Чтобы отладить, я предлагаю вам записать (например, распечатать) запрос.META (который должен содержать ключ среды HTTP_COOKIES
) на разных этапах вашего приложения. Можно условно войти весь запрос, с чем-то вроде этого:
import logging
logger = logging.getLogger('my_app')
def my_view(request):
if not request.COOKIES:
logger.error('Cookies empty! HttpRequest.META is: %s', dict(request.META))
Вы должны, конечно, обрабатывать сценарии, когда клиенты не позволяют хранить печенье, возможно, показывает страницу ошибки, если куки сессии имеют решающее значение для вашего приложения.
[Он устанавливается здесь] (https://github.com/django/django/blob/2fcafd169b5fcf4bb6711ca8aa4d59d80225ec7a/django/core/handlers/wsgi.py#L135). – solarissmoke