代码之家  ›  专栏  ›  技术社区  ›  Daniel Vandersluis

将cookie从主域复制到子域

  •  0
  • Daniel Vandersluis  · 技术社区  · 14 年前

    我的应用程序有一个用户空间,以前它可以被类似于domain.com/~用户名的URL访问,但是我正在将其转换为使用子域(username.domain.com)。然而,我遇到了一个问题,我希望有人能知道如何四处走动。

    目前,用户网站的访问者可以获得表单的cookie user<id>_authentication (何处) <id> 是他们正在访问的站点的用户ID),设置为拥有域www.domain.com。但是,现在我要切换到子域,我想找到这些cookie并将它们转移到一个新的cookie中,名为 authentication 每个子域,使用子域作为cookie域。然而,铁轨 cookies 数组找不到主域cookie。

    我知道如果老饼干用 .domain.com 作为域,它们将应用于子域,并将出现在 曲奇饼 ,但这些cookie已经存在,我正在尽可能使用户的更改无缝化——因此,如果他们已经有了站点的身份验证cookie,我希望他们在可能的情况下不必重新进行身份验证。

    是否有任何方法可以从主域获取cookie,或者是否有人对如何传输cookie有其他建议?

    更新: 抱歉,我之前没有说清楚,只有当访问者通过在用户网站上提交表单来主动验证自己时,才会设置cookie。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Winfield    14 年前

    如果您将cookie域更改为更宽松(应用于更多子域),则除了从以前工作的顶级域读取旧的、更受限制的cookie外,您将无法读取这些cookie。

    在子域可以读取cookie之前,您必须先读取cookie、进行身份验证,然后再编写一个新的更具许可性的cookie。

    您可以在这个特性之前展开您的迁移逻辑,并希望您能得到大多数人。其余的必须手动重新验证。

        2
  •  1
  •   Fosco    14 年前

    我个人认为他们应该重新认证。它只会发生一次,然后他们会得到新的“.domain.com”cookie。

    但是…实现这一点的一种方法是检查新的cookie,当找不到它时,重定向到主域上的一个新页面,提供返回的URL。

    在新页面中,检查旧样式cookie,设置新样式cookie,并重定向到原始URL。如果他们没有旧样式的cookie,请重定向到登录区域。

    希望这有帮助。