在 Flask 浏览器应用中设置 cookie 过期时间

问题描述 投票:0回答:1

我正在 Flask 中开发一个 Web 应用程序,我正在尝试设置一个 3 天后过期的 cookie。这是我的代码:

@app.route('/start')
def setcookie():
    expire_date = datetime.datetime.now() + datetime.timedelta(days=3)
    resp = make_response(render_template('start.html'))
    resp.set_cookie('mycookie',id_generator(6),max_age=expire_date,expires=expire_date)
    return resp

尽管如此,当我在 Chrome 中检查 cookie 时,我看到 Expires/Max-age = Session

id_generator 是一个自定义函数,生成 6 小时字母数字跟踪 ID。我设置了 max_age 和过期时间,因为两者都不起作用,所以我正在尝试两者:-)

如何在浏览器应用程序中为 Cookie 设置自定义到期日期或最长期限?

flask cookies
1个回答
0
投票

似乎您准备的日期时间expire_date与

max_age
参数不兼容。 文档的片段:

max_age (timedelta | int | None) – 应该是秒数,如果 cookie 的持续时间与客户端的浏览器会话一样长,则应为 None(默认)。

expires (str | datetime | int | float | None) – 应该是日期时间对象或 UNIX 时间戳。

如果您使用以下两个选项之一,您将获得所需的结果:

A.将

expires
设置为日期时间对象:

def setcookie():
    expire_date = datetime.datetime.now() + datetime.timedelta(days=30)
    resp = make_response(render_template('home.html'))
    resp.set_cookie('mycookie','somevaluehere',expires=expire_date)
    return resp

B.将

max_age
设置为整数:

def setcookie():
    resp = make_response(render_template('home.html'))
    resp.set_cookie('mycookie','somevaluehere',max_age=1234567)
    return resp
© www.soinside.com 2019 - 2024. All rights reserved.