【问题标题】:Django: set-cookie causes cookies to be stored in the backend instead of the frontendDjango:set-cookie 导致 cookie 存储在后端而不是前端
【发布时间】:2022-01-16 17:08:34
【问题描述】:
- example.com 是前端 (Next.js)
- api.example.com 是后端 (Django)
由于某种原因,cookie 存储在后端域中。
这不允许前端访问存储的 cookie。
我已经使用以下实现了一个身份验证 API,但据我所知,
没有设置更改存储 cookie 的域。
- django-cors-headers
- dj-rest-auth
- djangorestframework-simplejwt
CORS_ALLOWED_ORIGINS = ['https://example.com']
CORS_ALLOW_CREDENTIALS = True
如何在前端域中存储 cookie?
【问题讨论】:
标签:
django
cookies
cross-domain
【解决方案1】:
我认为您正在寻找SESSION_COOKIE_DOMAIN
用于会话 cookie 的域。将此设置为字符串,例如
"example.com" 用于跨域 cookie,或使用 None 作为标准
域 cookie。
要在 CSRF_USE_SESSIONS 中使用跨域 cookie,您必须包含
前导点(例如“.example.com”)以适应 CSRF 中间件的
推荐人检查。
在生产站点上更新此设置时要小心。如果你
更新此设置以在网站上启用跨域 cookie
以前使用的标准域 cookie,现有的用户 cookie 将
设置为旧域。这可能会导致他们无法登录
只要这些 cookie 持续存在。
response.set_cookie 也有一个 domain 参数