У меня есть публичный сайт Django, который использует защиту CSRF.Django CSRF_COOKIE_DOMAIN - как изящно изменить
Я не установил CSRF_COOKIE_DOMAIN
. Мой сайт использует субдомены.
Иногда пользователь заканчивает тем, что имеет csrftoken
cookie, установленный на .toplevel.com
, а также на sub.toplevel.com
. Это вызывает проблемы, так как проверка CSRF завершается с ошибкой, если в чеке используется неправильный файл cookie.
Я хотел бы установить CSRF_COOKIE_DOMAIN
в .toplevel.com
. Тем не менее, я также хотел бы удалить любые csrftoken
куки для любых поддоменов *.toplevel.com
. Как мне это сделать?
Если я не удалю другие файлы cookie, я просто закончу в исходной ситуации, когда в разных доменах есть два куки с одинаковым именем, что вызывает проблемы.
Единственным недостатком является то, что это не очень грациозный подход (запросы POST, которые появляются сразу после того, как эта новая конфигурация завершится с ошибкой). –
Это очень верно, если это изменение происходит между кем-то, выполняющим GET, а затем с немедленным запросом POST, он потерпит неудачу. Это очень маловероятный случай, если на сайте мало пользователей, но если это представляет большую проблему (например, если есть тысячи одновременных пользователей), это может быть устранено путем временного переопределения 'django.middleware.csrf.CsrfViewMiddleware 'и проверку обоих имен файлов cookie в методе process_view. –
@ АлексейКлелешевич вы тоже можете мне помочь с моей проблемой? http://stackoverflow.com/q/29559000/4029893. Похоже, вы поймете. –