使子域读取父域会话

Posted

技术标签:

【中文标题】使子域读取父域会话【英文标题】:make the subdomain read parent domains sessions 【发布时间】:2012-12-25 15:33:13 【问题描述】:

我正在使用 django。我托管了 xyz.com。作为同一个网站的一部分,我有 abc.xyz.com

现在我希望 abc.xyz.com 从 xyz.com 读取会话信息,以便我可以相应地对待登录用户。

我已阅读建议将 -

SESSION_COOKIE_DOMAIN = ".xyz.com"

SESSION_COOKIE_DOMAIN = "xyz.com"

但它们都不起作用。我该如何解决?

PS:我正在使用 nginx 将请求指向 abc.xyz.com 到 xyz.com/abc

【问题讨论】:

嗯,根据 django 文档:docs.djangoproject.com/en/dev/ref/settings/… - SESSION_COOKIE_DOMAIN = ".xyz.com" 应该可以工作。 您确定在设置 cookie 的应用上正确设置了 SESSION_COOKIE_DOMAIN 设置吗? xyz.com 应该正确设置 cookie,以便 abc.xyz.com 可以读取它。 OK '.xyz.com' 有效。我不知道我之前做了什么导致它不起作用。 【参考方案1】:
SESSION_COOKIE_DOMAIN = ".xyz.com"

工作正常。

【讨论】:

【参考方案2】:

据我所知,

SESSION_COOKIE_DOMAIN = "xyz.com"
SESSION_COOKIE_NAME = "examplesessionid"

应该可以解决问题。这应该添加到两个安装中。

如果还是不行,我猜SECRET_KEY 应该是一样的。因为,Django 使用它对 cookie 数据进行签名。这将是一种解决方法。

但是,会话共享可能不是一个好主意。如果您想要单点登录,请查看 django-cas 之类的东西,它允许您拥有 2 个单独的会话,但用户只能登录一次。

【讨论】:

以上是关于使子域读取父域会话的主要内容,如果未能解决你的问题,请参考以下文章

从父域到子域的 JavaScript 访问?

从子域到父域获取异常

如何从没有子域的url中获取父域[重复]

Dns 无法从不同注册器中的父域解析 Route 53 中的子域

应用程序域

更新 Grails 中父域类中的“lastUpdated”字段