使用jsonify时可以设置cookie吗?

10 投票
1 回答
5249 浏览
提问于 2025-04-29 22:04
@user.route('/login', methods=['POST'])
def check_oauthuser():
    token = request.args.get('token','')
    open_u_id = request.args.get('openUId','')
    _self_expires = 60 * 60 * 24 * 30 * 3

    #re = Response()
    #re.set_cookie('name','1111111')

    if token!='' and open_u_id!='':
        set_user_login_cache(user_id, token)
        return jsonify(state=0,msg='success')

我想在响应头中设置一个cookie,但我使用的是jsonify,而不是创建一个Response。我该怎么做才能在返回jsonify时添加一个cookie呢?

暂无标签

1 个回答

22

jsonify 会返回一个 Response 对象,所以在你返回视图之前,先把它保存下来,然后再用 Response.set_cookie 添加 cookie。

out = jsonify(state=0, msg='success')
out.set_cookie('my_key', 'my_value')
return out

你可能只想把值添加到会话 cookie 中。Flask 的 session 会自动把值转换成 json 格式并对 cookie 进行签名以确保安全,而使用 set_cookie 时,你需要手动完成这些步骤。

from flask import session

session['my_key'] = 'my_value'

撰写回答