Куки сеанса Django не сохраняются
У меня есть Django API, который после успешного входа в систему использует заголовки ответа Set-Cookie для установки sessionId и CSRF Token в cookies. У меня это работало и вдруг перестало, куки больше не сохраняются. После входа в систему я вижу их в консоли, а когда обновляю, они исчезают. Я запускаю свое приложение Next.js локально с Django API, размещенным на Google Cloud Run с пользовательским доменом. Кто-нибудь знает, что происходит?
Поскольку ваш Django API размещен в Google Cloud Run (вероятно, с использованием HTTPS), убедитесь, что ваши файлы cookie установлены правильно, установите флажок Secure: Cloud Run использует HTTPS, поэтому ваши файлы cookie должны быть помечены как защищенные. Проверьте атрибут SameSite
: По умолчанию современные браузеры блокируют сторонние файлы cookie, если только явно не задан параметр SameSite=None
; Secure.
регистрация settings.py файл:
SESSION_COOKIE_SECURE = True # required for HTTPS
SESSION_COOKIE_SAMESITE = "None" # required for cross-origin requests
SESSION_COOKIE_HTTPONLY = True # helps prevent XSS attacks
CSRF_COOKIE_SECURE = True # required for HTTPS
CSRF_COOKIE_SAMESITE = "None" # required for cross-origin requests
CSRF_COOKIE_HTTPONLY = False # CSRF token needs to be accessible by JS for Next.js
при выполнении вызовов API из Next.js убедитесь, что вы указали учетные данные
fetch("https://your-api.com/login/", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
credentials: "include", // it ensures cookies are sent and received
body: JSON.stringify({ username, password }),
});