【问题标题】:Flask session: always getting new sessions on requests, request.cookies is always empty烧瓶会话:总是在请求上获得新会话,request.cookies 总是空的
【发布时间】:2016-01-24 09:58:45
【问题描述】:

我正在制作一个 Flask Web 应用程序,我尝试在 Flask 存储数据;在我的login 路线中,我做了这样的事情:

session["loginID"] = "the login id"
session["some_data"] = dict()

执行print session 显示值已正确设置。

我的问题如下:在另一个 AJAX 调用中,我尝试检索 some_data 字典来自 session,但 session 为空。

我试图在 Flask 源代码中查找发生了什么,结果发现 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()

有人知道什么会导致这种行为吗?任何帮助将不胜感激。

【问题讨论】:

    标签: python cookies flask


    【解决方案1】:

    您必须为 ajax 调用设置 cookie 域。我不知道为什么,但我知道这很重要。

    http://flask.pocoo.org/docs/0.10/config/

    【讨论】:

    • 不,不是那样。事实证明,必须在 AJAX 请求中将凭据从 Web 浏览器传递到服务器,否则不会将会话信息发送回 Flask;所以在我的情况下,解决方案是在fetch() 调用选项中将credentials 设置为include。无论如何感谢您的帮助。
    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多