【问题标题】: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 参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2016-02-03
      • 2019-02-26
      • 2022-11-30
      • 2018-07-20
      相关资源
      最近更新 更多