2010-11-24 146 views
2

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

我会研究自己,但我想知道如果任何人也许有经验。

更新:

什么其实我想要做的就是让Django的存储cookies为域1当我访问domain1.com诸如此类的其他领域。我认为它应该像存储cookie时使用当前客户端域一样简单。但我怀疑,Django还提供了这样的功能,而无需修改......也许我可以建立一个中间件类改变全局设置当前域..

更新:

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

回答

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。

+0

感谢您的回应,清除了一切!将更明确地编辑我的问题,我想要做什么:) – 2010-11-25 00:35:22