Python Flask会话:总是在请求时获取新会话,request.cookies总是空的
我正在制作一个Flask web应用程序,我尝试在中使用session对象 烧瓶用于存储数据;在我的Python Flask会话:总是在请求时获取新会话,request.cookies总是空的,python,cookies,flask,Python,Cookies,Flask,我正在制作一个Flask web应用程序,我尝试在中使用session对象 烧瓶用于存储数据;在我的登录路线中,我执行以下操作: session["loginID"] = "the login id" session["some_data"] = dict() 执行打印会话显示值设置正确 我的问题如下:在另一个AJAX调用中,我尝试检索 来自会话的一些\u数据字典,但会话为空 我试图在Flask源代码中查找发生了什么,结果是request.cookies对于我的请求总是空的,所以open\u
登录
路线中,我执行以下操作:
session["loginID"] = "the login id"
session["some_data"] = dict()
执行打印会话
显示值设置正确
我的问题如下:在另一个AJAX调用中,我尝试检索
来自会话
的一些\u数据
字典,但会话
为空
我试图在Flask源代码中查找发生了什么,结果是request.cookies
对于我的请求总是空的,所以open\u 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调用设置cookie域。我不知道为什么,但我知道这很重要
不,不是那样的。事实证明,在AJAX请求中,凭据必须从web浏览器传递到服务器,否则不会将会话信息发送回Flask;因此,在我的例子中,解决方案是在
fetch()
调用选项中将凭证设置为include
。无论如何,谢谢你的帮助。