2

我有多个本地运行的 Django 开发站点,例如http://localhost:8000, http://localhost:8001,http://localhost:8002等。

最初,我将 SESSION_COOKIE_DOMAIN 和 CSRF_COOKIE_DOMAIN 设置为 '' 或者127.0.0.1但这会导致每个站点覆盖另一个站点的 cookie,导致我每次在站点之间切换时都必须登录。我尝试使用127.0.0.1:<port>但没有效果。

如何让这些网站使用单独的 cookie?

4

2 回答 2

3

此问题的一种解决方案是使用本地域名解析来访问每个不同的开发服务器。如果您将SESSION_COOKIE_DOMAIN保留为 None,则返回的 cookie 是标准域 cookie,并且将具有与请求相同的域。

查看http://en.wikipedia.org/wiki/Hosts_(file),它描述了如何添加本地主机文件条目。

使用这样的主机文件:

127.0.0.1 www.testserver1.com www.testserver2.com

然后,您可以在以下位置访问每个不同的测试服务器:

http://www.testserver1.com:8000
http://www.testserver2.com:8001

我还没有尝试过,但我相信它应该可以工作。

或者,根据 Mikhail 的回答,为每个实例使用不同的会话 cookie 名称。

于 2013-07-18T13:30:59.010 回答
0

根据各种 RFC,Cookie 在同一域的端口之间共享(参见例如https://www.rfc-editor.org/rfc/rfc6265#section-8.5)。所以这不是 django 特有的。

我认为您可以使用不同的 SESSION_COOKIE_NAME 至少将会话分开。

于 2013-07-18T12:44:16.097 回答