Django - Браузер не сохраняет куки, если не установлен CSRF_COOKIE_DOMAIN
Я пытался заставить CORS/CSRF работать на моей локалке и обнаружил странную проблему, что если я не установлю CSRF_COOKIE_DOMAIN
на localhost
, как указано в этом ответе и я понятия не имею, почему это работает.
Читал об этом в MDN, и в MDN в основном говорится, что текущий url документа будет использоваться, если он не задан явно.
Какова правильная причина того, что куки не сохраняются, если не указан домен куки? Для справки: мой frontend url - http://localhost:5173
, и я пробовал комбинации 127.0.0.1:5173
, чтобы заставить его работать, но без этого не получилось.
Вот мои настройки для Django
base.py
SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_HTTPONLY = False
CORS_ALLOW_CREDENTIALS = True
CSRF_COOKIE_SECURE = True
X_FRAME_OPTIONS = "DENY"
и local.py для локального устройства
CSRF_TRUSTED_ORIGINS = ["http://localhost:5173", "http://127.0.0.1"]
CSRF_COOKIE_DOMAIN = "127.0.0.1:5173"
# CSRF_COOKIE_SAMESITE = "None"
# SESSION_COOKIE_SAMESITE = "None"
CSRF_COOKIE_SECURE = True
# django-cors-headers
CORS_ALLOWED_ORIGINS = [
"http://*.localhost:5173",
"http://*.127.0.0.1:5173",
"http://localhost:5173",
"http://127.0.0.1:5173",
]
CSRF_COOKIE_DOMAIN = "localhost"