Django CSRF-защита для межсайтовых почтовых запросов

Я использую react в качестве фронтенда и использую django для бэкенда. Когда я размещаю фронтенд и бэкенд на localhost, все работает нормально, и X-CSRFTOKEN отправляется отлично.

const instance = axios.create({
    withCredentials: true,
    withXSRFToken: true,
    xsrfHeaderName : 'X-CSRFTOKEN',
    xsrfCookieName : 'csrftoken'
});

Мои настройки DJango таковы (взяты из этого ответа Django - проверьте атрибут cookies "SameSite" ):

CORS_ALLOW_CREDENTIALS = True
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SAMESITE = "None"
SESSION_COOKIE_SAMESITE = "None"

но когда мой фронтенд (firebase) и бэкенд (eks aws) размещены на разных субдоменах, я получаю ошибку 403 Forbidden. Edit:

CORS_ALLOWED_ORIGINS = ["http://localhost:3000", "https://app.example.com"]

CSRF_TRUSTED_ORIGINS = [
    "http://localhost:3000",
    "https://app.example.com",
]

Он должен возвращать ответ 201 ccreated, но вместо этого он возвращает ошибку 403, CSRF verification failed. Request aborted.

Добавьте свое доменное имя в CSRF_TRUSTED_ORIGINS = ['https://yourdomain.com'] в settings.py

Проблема заключалась в том, что когда я проверял куки, домен для куки csrf был backend.app.com, а фронтенд был размещен на frontend.app.com.. Поэтому я добавил эту настройку в модуль настроек django, и все заработало нормально:

CSRF_COOKIE_DOMAIN = ".app.com"
Вернуться на верх