Ошибка CSRF-токена для приложения django при развертывании на сервере AWS

У меня есть сайт django, который отлично работает локально, но при попытке развернуть его с помощью AWS elastic beanstalk я получаю следующую ошибку при попытке входа (используя django allauth)

Запрещено (403) Проверка CSRF не прошла. Запрос прерван.

В журналах записано:

Запрещено (CSRF cookie не установлен.): /accounts/login/

Мой промежуточный файл settings.py имеет:

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.locale.LocaleMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.common.BrokenLinkEmailsMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

У формы есть csrf_token:

<form class="login" method="POST" action="{% url 'account_login' %}">
  {% csrf_token %}
  {{ form|crispy }}
  {% if redirect_field_value %}
  <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
  {% endif %}
  <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a>
  <button class="primaryAction btn btn-primary" type="submit">{% trans "Sign In" %}</button>
</form>

Любые советы о том, как исправить и почему он работает нормально локально, но не работает при развертывании, приветствуются

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

попробуйте SESSION_COOKIE_SECURE = True в настройках защитить куки эта ошибка возникает, когда куки не защищены возможно, отладка равна True, убедитесь, что она равна False DEBUG = False измените порядок промежуточного ПО иногда это случается для порядков промежуточного ПО

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