我有多个本地运行的Django开发网站,如http://localhost:8000
,http://localhost:8001
,http://localhost:8002
等。
最初,我将SESSION_COOKIE_DOMAIN和CSRF_COOKIE_DOMAIN设置为''或127.0.0.1
,但这会导致每个网站覆盖其他网站,导致我每次在网站之间切换时都必须登录。我尝试使用127.0.0.1:<port>
,但没有效果。
如何让这些网站使用单独的Cookie?
答案 0 :(得分:3)
此问题的一个解决方案是使用本地域名解析来访问每个不同的开发服务器。如果您将SESSION_COOKIE_DOMAIN保留为无,则返回的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名称。
答案 1 :(得分:0)
根据各种RFC,Cookie在同一域的端口之间共享(请参阅例如http://tools.ietf.org/html/rfc6265#section-8.5)。所以这不是django特有的。
我认为你可以使用不同的SESSION_COOKIE_NAME至少分开会话。