CSRF 403 при входе в Django по умолчанию

Я довольно новичок в Django. Вот что мне нужно понять:

После обновления с Django 3 до 4:

На локальном сервере разработчиков проблем нет.

На производстве: Ошибка CSRF 403 при входе в систему.

На странице входа в систему загружен файл cookie, содержащий

csrftoken: pAFeeUI8YFXZ2PKRYxOTX1qz4Xgto42WVNi7FFvBlZDqcFLwQ2rdQvVeZBHFSpLW

(Локальное и сеансовое хранилища пусты)

В элементе FORM:

<input type="hidden" name="csrfmiddlewaretoken" value="Vz4FiujD4qkLpxCwWNJU0HCWs4u0Qf4RrMHyJf66rK0cznDbOimeTb7BnIVckANR">

Заметьте, что они не совпадают.

Я попробовал вручную удалить куки, а также запустить ./migrate.py clearsessions.

В первый раз, вчера, казалось, что ошибка не возникает в окне инкогнито, но сегодня она сохраняется даже в окне инкогнито, а также в другом браузере.

Дополнительная информация

allauth был установлен ранее, но вызывал бесконечный цикл перенаправления при входе в систему, поэтому был удален. url страницы входа /login/?next=/.

Большое спасибо.

вы должны добавить {% csrf_token %},

{% csrf_token %}
<input type="hidden" name="csrfmiddlewaretoken" value="Vz4FiujD4qkLpxCwWNJU0HCWs4u0Qf4RrMHyJf66rK0cznDbOimeTb7BnIVckANR">

я так думаю.

По крайней мере, в Django 4.0, вы можете и, возможно, должны указать доверенные источники CSRF в вашем settings.py файле:

CSRF_TRUSTED_ORIGINS = ["https://yourdomain.com", "https://www.yourdomain.com"]

Обратите внимание на www и non-www, а также на отсутствие трелей /.

Во всяком случае, это решило проблему для меня.

Смотрите Docs.

Вернуться на верх