Django: set-cookie заставляет хранить куки в бэкенде, а не во фронтенде

  • example.com - фронтенд (Next.js)
  • api.example.com - бэкенд (Django)

По какой-то причине cookie хранится на внутреннем домене.

Это не позволяет front-end получить доступ к сохраненным файлам cookie.

Я реализовал API аутентификации, используя следующее, но, насколько я могу судить, нет настройки для изменения домена, в котором хранятся куки.

  • django-cors-headers
  • dj-rest-auth
  • djangorestframework-simplejwt
CORS_ALLOWED_ORIGINS = ['https://example.com']
CORS_ALLOW_CREDENTIALS = True

Как я могу хранить файлы cookie на внешнем домене?

Я думаю, что вы ищете SESSION_COOKIE_DOMAIN

Домен, используемый для сессионных куки. Установите это значение в строку, например "example.com" для междоменных cookie-файлов, или используйте None для стандартных доменных файлов cookie.

Чтобы использовать междоменные куки с CSRF_USE_SESSIONS, вы должны включить в поле ведущую точку (например, ".example.com") для того, чтобы промежуточное ПО CSRF могло использовать проверки реферера.

Будьте осторожны при обновлении этого параметра на рабочем сайте. Если вы обновить этот параметр, чтобы включить междоменные куки на сайте, который ранее использовались стандартные доменные файлы cookie, существующие пользовательские файлы cookie будут установлены на старый домен. Это может привести к тому, что они не смогут войти в систему до тех пор, пока эти файлы cookie сохраняются.

также response.set_cookie имеет аргумент domain также

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