2
我正在制作Flask Web应用程序,我尝试使用 Flask中的会话对象来存储数据;在我login
路线我做这样的事情:Flask会话:总是在请求上获得新的会话,request.cookies总是为空
session["loginID"] = "the login id"
session["some_data"] = dict()
做一个print session
显示值是否设置正确。
我的问题是:在另一个AJAX调用,我试着找回 some_data
字典从session
,但session
是空的。
我试图找到会发生什么,在寻找瓶的源代码,原来request.cookies
总是空的我的请求,所以open_session
每次返回一个新的会话。
以下是相应的代码:
def open_session(self, app, request):
s = self.get_signing_serializer(app)
if s is None:
return None
val = request.cookies.get(app.session_cookie_name)
if not val:
return self.session_class()
max_age = total_seconds(app.permanent_session_lifetime)
try:
data = s.loads(val, max_age=max_age)
return self.session_class(data)
except BadSignature:
return self.session_class()
是否有人知道是什么导致这种行为?任何帮助将不胜感激。
不,不是这样。事实证明,凭证必须通过AJAX请求从Web浏览器传递到服务器,否则会话信息不会发送回Flask;所以在我的情况下,解决方法是在'fetch()'调用选项中将'credentials'设置为'include'。还是要谢谢你的帮助。 – mguijarr