Python Django会话返回“无”

时间:2016-05-23 20:51:24

标签: python django session web

tl; dr:Python新手,Django的会话在使用HTTPS时未正确传播

我正在构建一个基本的Web服务,它依靠会话/ cookie来验证用户。

在第一次身份验证期间,我配置了这样的特定会话:

request.session['userSecureId'] = "blabla"
return HttpResponseRedirect('http://localhost/secure',context)

此时,django_session表中添加了一个新的会话密钥。 session_data字段上的基本b64解码确认存在'userSecureId'

在我看来,我检查这个会话是否像这样存在:

if request.session.get('userSecureId'):
    # do something

如果我在我的本地系统(普通HTTP)上尝试这个,它的效果很好。所以我的下一步是在启用了SSL的远程服务器上运行它。我配置了 我在settings.py上SESSION_COOKIE_SECURE = True,但现在'userSecureId'返回的值始终为None。

这可能是一个新手问题,所以任何指针都会被赞赏=)

此外,如果我打印request.session.session_key我能够成功检索会话密钥,这意味着Django正确检测到我的sessionid cookie,但无法解码session_value的内容

编辑:我刚尝试在我的远程系统上访问Django(相同的配置),我遇到了同样的问题。我不知道为什么我不能运行会话值。代码使用127.0.0.1 w / o问题但

1 个答案:

答案 0 :(得分:0)

根据herehere

要在HTTP和HTTPS(以及跨域)之间共享会话,您应该在设置中设置SESSION_COOKIE_DOMAIN

SESSION_COOKIE_DOMAIN = '.example.com'