当我设置SESSION_COOKIE_DOMAIN = '.mysite.com'
然后运行生产站点时,该站点会创建正确的跨域cookie并将其设置为.mysite.com
。但是,如果我设置SESSION_COOKIE_DOMAIN = '.localhost'
并在localhost:8000
运行本地开发服务器,则创建的Cookie是非跨域Cookie localhost
。
为什么会出现这种情况?
感谢。
答案 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"