Токен CSRF не работает в производственной среде

1
7

Моя среда: бэкэнд Django, развернутый на Elastic Beanstalk за балансировщиком нагрузки приложения, который завершает SSL.

Поток такой: мой веб-сайт обслуживается на S3 и облачном фронте на домене: https://www.test.app.mydomain.com/. Это отправляет запрос на бэкэнд, который имеет домен: https://api.test.mydomain.com/. Запрос захватывает csrftoken в cookie-файлах браузера и включает его в заголовки.

Токены CSRF работают локально, но не работают в моей производственной среде. Самое главное, в куки-файлах браузера в рабочей среде нет csrftoken.

Вот мои настройки, которые актуальны:

MIDDLEWARE = [
    # keep on top
    'corsheaders.middleware.CorsMiddleware',
    # rest of the middleware
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]
SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"

SESSION_COOKIE_AGE = 7200  # 2 hours

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = ['http://localhost:3000', 'https://www.test.app.mydomain.com', 'https://test.app.mydomain.com']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True

CORS_ALLOWED_ORIGINS = ['http://localhost:3000', 'https://www.test.app.mydomain.com', 'https://test.app.mydomain.com']
CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_HEADERS = list(default_headers) + [
    'Tab-ID',
]

София
Вопрос задан13 июня 2024 г.

1 Ответ

2
Авдей
Ответ получен17 сентября 2024 г.

Ваш ответ

Загрузить файл.