本地主机上的Django SESSION_COOKIE_DOMAIN

时间:2011-07-12 21:30:39

标签: django session-cookies

当我设置SESSION_COOKIE_DOMAIN = '.mysite.com'然后运行生产站点时,该站点会创建正确的跨域cookie并将其设置为.mysite.com。但是,如果我设置SESSION_COOKIE_DOMAIN = '.localhost'并在localhost:8000运行本地开发服务器,则创建的Cookie是非跨域Cookie localhost

为什么会出现这种情况?

感谢。

2 个答案:

答案 0 :(得分:7)

这与浏览器和Cookie的工作方式有关。因为您不允许将cookie设置为类似.com的内容,所以也不能将其设置为.localhost。

您可以在此处查看更多信息:https://code.djangoproject.com/ticket/10560。看起来Django中没有真正的解决方案。我希望他们能警告我们,而不仅仅是打破。

我没有一个好的解决方案。为了进行测试,您可以将hosts文件设置为使用类似test.com而不是localhost的内容来指向您的runserver。

答案 1 :(得分:2)

对于开发服务器,您只需使用

SESSION_COOKIE_SECURE= False #default use just to override your prod setting
SESSION_COOKIE_DOMAIN= None  #default  use just to override your prod setting

或者您可以使用主机的文件来解析域名

 SESSION_COOKIE_DOMAIN= '.localhost'

或者类似的东西

SESSION_COOKIE_SECURE= False
SESSION_COOKIE_DOMAIN=  "127.0.0.1"