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

时间:2010-11-24 16:21:00

标签: django cookies

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

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

更新

我真正想要做的是当我访问domain1.com etcetera以获取其他域时,为domain1制作django存储cookie。我认为在存储cookie时使用当前客户端域应该很容易。我怀疑django没有修改就提供了这样的功能......也许我可以构建一个中间件类来将全局设置更改为当前域..

更新

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

1 个答案:

答案 0 :(得分:5)

无法为其他域名存储或检索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_rewrite很容易。