Несколько сайтов Django в одном домене — CSRF не работает

У меня есть два приложения, работающих в одном домене на разных портах, оба используют промежуточное ПО csrf.

Когда я вхожу в одно из приложений, все POST отправляются из другого с ошибкой.
Я полагаю, потому что SESSION_COOKIE_DOMAIN одно и то же.

Я попытался изменить SESSION_COOKIE_NAME, однако 'csrftoken' cookie используется в запросах форм POST на обоих сайтах, несмотря на то, что теперь есть новый cookie с указанным мной именем.

Когда я публикую информацию с помощью AJAX и получаю токен csrf из файла cookie с новым именем, он работает, однако форма отправляется с ошибкой с проверкой CSRF.


person Diko Parvanov    schedule 06.03.2015    source источник


Ответы (1)


Файл cookie токена CSRF по умолчанию называется csrftoken, но вы можете управлять именем файла cookie с помощью параметра CSRF_COOKIE_NAME. Документы.

Используйте разные имена файлов cookie CSRF для каждого приложения.

person Joseph    schedule 06.03.2015
comment
AJAX работает, когда я меняю имя файла cookie, html-формы POST-запросов не - person Diko Parvanov; 06.03.2015
comment
Вы сказали, что изменили только SESSION_COOKIE_NAME, но изменили ли вы также CSRF_COOKIE_NAME, как я уже упоминал? Используете ли вы формы с тегом {% csrf_token %}? - person Joseph; 06.03.2015
comment
ну, сэр, SESSION_COOKIE_NAME и CSRF_COOKIE_NAME — это разные вещи. ты спас меня. Спасибо! - person Diko Parvanov; 06.03.2015