代码之家  ›  专栏  ›  技术社区  ›  Lucas Moeskops

为具有多个域名的Django站点设置默认cookie域

  •  2
  • Lucas Moeskops  · 技术社区  · 14 年前

    我想为我的cookie设置一个特定的cookie域,因为这可以解决我们的站点似乎与IE8有关的一些问题。Django似乎有一个名为session-cookie-domain的设置,可以将其设置为获取该设置。但是,问题是我们的网站包含多个子网站,这些子网站具有可选域名。所以我的问题是,我如何才能做到这一点?我希望每个域都有一个标准的cookie域,因为我担心像IE8这样的浏览器会拒绝来自不同域的cookie(更快)。

    我会自己做研究,但我想知道是否有人有经验。

    更新:

    我真正想做的是,当我访问其他域的domain1.com等时,让django为domain1存储cookies。我认为在存储cookie时应该像使用当前客户机域一样简单。不过,我怀疑Django提供的这种功能没有修改…也许我可以构建一个中间件类,将全局设置更改为当前域。

    更新:

    这个问题和答案帮助了我: Changing Django settings variable dynamically based on request for multiple site 感谢您的帮助:)

    1 回复  |  直到 14 年前
        1
  •  5
  •   Jordan Reiter    14 年前

    无法为其他域名存储或检索cookie。换句话说,如果我在yahoo.com,我就不能得到google.com的cookie。但是,foo.yahoo.com和bar.yahoo.com都可以检索保存在.yahoo.com上的cookie。

    如果您运行的网站包含多个子网站,如果它们都共享同一个基本域(即site1.domain.com、site2.domain.com等),则应将该域用于 SESSION_COOKIE_DOMAIN . 但是,如果他们有不同的域,那么他们基本上不可能在不使用其他方法获取cookie的情况下共享cookie。例如,您可以包含指向中心站点的图像或脚本,该站点可以存储和检索cookie,这些cookie通过javascript提供给页面的其余部分。

    如果必须保留这些备用域名,则可以始终将Web服务器设置为立即从这些备用域名重定向到共享标准域。这很容易用mod重写来完成。