Невозможно войти в Django Admin после обновления: Выдает ошибку Forbidden (403) CSRF verification failed. Запрос прерван
проблема возникла сразу после обновления версии django, никаких изменений в настройках django нет.
Изображение ошибки приведено ниже изображение ошибки
Я уже разместил решение этой проблемы (я знаю, что разместил и вопрос) на https://shriekdj.hashnode.dev/unable-to-login-django-admin-after-update-giving-error-forbidden-403-csrf-verification-failed-request-aborted
Проблема
Невозможно войти в Django Admin после обновления: Выдает ошибку Forbidden (403) CSRF verification failed. Запрос прерван.
Эта проблема может возникнуть внезапно после обновления на более новую версию Django.
Детали
Команда Django Project Foundation внесла некоторые изменения в требования безопасности для всех Django версии 4.0 и выше. В частности, они сделали обязательным создание списка адресов, получающих любой тип загрузки формы или POST запроса в настройках проекта под названием CSRF_TRUSTED_ORIGINS.
Они не обновили детали в последней документации к учебнику, но они опубликовали заметки об изменениях на https://docs.djangoproject.com/en/4.0/releases/4.0/#csrf-trusted-origins-changes-4-0.
Первое решение
Для
localhostили127.0.0.1.
Перейдите в
.settings.pyвашего проекта django и создайте новый список урлов, как показано ниже
CSRF_TRUSTED_ORIGINS = ['http://*', 'https://*']
если вы запускаете проект на localhost, то вы должны открыть все урлы здесь
*символ означает все урлы также здесьhttp://является обязательным.
Второе решение
Это также для Localhost и для
DEBUG=True.
Скопируйте список ALLOWED_ORIGINS в CSRF_TRUSTED_ORIGINS, как указано ниже.
ALLOWED_ORIGINS = ['http://*', 'https://*']
CSRF_TRUSTED_ORIGINS = ALLOWED_ORIGINS.copy()
Третье решение
При развертывании необходимо добавить урлы, чтобы разрешить загрузку формы (делая любой POST запрос).
Я знаю, что это может быть сложно и отнимает много времени, но теперь это обязательно.
Также это обязательно для онлайн IDE, таких как Replit, Glitch и многих других.
Дайте ответ, если какие-либо решения помогли вам для повышения алгоритма моего контента.
пока 👋.
Откройте файл конфигурации (скорее всего settings.py) и установите ключ CSRF_TRUSTED_ORIGINS как неглубокую копию ключа ALLOWED_HOSTS, который, в свою очередь, должен быть установлен в соответствии с рекомендациями документации.1
Например:
# -*- coding: utf-8 -*-
# For security consideration, please set to match the host/domain of your site, e.g., ALLOWED_HOSTS = ['.example.com'].
# Please refer https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts for details.
ALLOWED_HOSTS = ['.yourdomain.com', '.localhost', '127.0.0.1', '[::1]']
# Whether to use a secure cookie for the CSRF cookie
# https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-cookie-secure
CSRF_COOKIE_SECURE = True
# The value of the SameSite flag on the CSRF cookie
# https://docs.djangoproject.com/en/3.2/ref/settings/#csrf-cookie-samesite
CSRF_COOKIE_SAMESITE = 'Strict'
CSRF_TRUSTED_ORIGINS = ALLOWED_HOSTS.copy()
(...)
1 В конфигурационном файле содержится ссылка на документацию клавиши ALLOWED_HOSTS - прямо над этой клавишей. Сюрприз, сюрприз.