【问题标题】:Django SESSION_COOKIE_DOMAIN on localhost本地主机上的 Django SESSION_COOKIE_DOMAIN
【发布时间】:2020-03-30 12:36:26
【问题描述】:
当我设置SESSION_COOKIE_DOMAIN = '.mysite.com' 然后运行生产站点时,该站点会创建正确的跨域cookie 并将其设置为.mysite.com。但是,如果我设置 SESSION_COOKIE_DOMAIN = '.localhost' 并在 localhost:8000 运行本地开发服务器,则创建的 cookie 是非跨域 cookie localhost。
为什么会这样?
谢谢。
【问题讨论】:
标签:
django
session-cookies
【解决方案1】:
这与浏览器和 cookie 的工作方式有关。因为不允许将 cookie 设置为 .com 之类的内容,所以也不能将其设置为 .localhost。
您可以在此处查看更多信息:https://code.djangoproject.com/ticket/10560。看起来 Django 中没有真正的解决方案。我真希望他们会警告我们,而不是仅仅打破。
虽然我没有一个好的解决方案。对于测试,您可以将主机文件设置为使用类似 test.com 而不是 localhost 来指向您的运行服务器。
【解决方案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"