You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask框架调用自定义函数设置cookies不生效问题求助

问题根因
  • get_cookie函数生成的cookie是绑定在它返回的resp响应对象上的,只有把这个响应对象返回给前端,浏览器才会收到Set-Cookie指令存储对应cookie。
  • 你在主路由中调用check_cookie()后没有接收它的返回值,直接返回了新生成的render_template('base.html')响应,这个新响应没有任何cookie设置,get_cookie生成的带cookie的响应被直接丢弃了,所以浏览器不会生成对应cookie。
修复代码

方案1:修改现有路由逻辑

@app.route('/')
def base():
    check_result = check_cookie()
    # 无cookie时check_cookie会返回带cookie的响应,直接返回该响应即可
    if check_result is not None:
        return check_result
    # 已有cookie,返回正常渲染结果
    return render_template('base.html')

方案2:优化为装饰器(可选,结构更清晰)

如果有多个路由都需要检查cookie,可以把校验逻辑封装为装饰器,避免每个路由都写重复判断:

from functools import wraps

def cookie_check(f):
    @wraps(f)
    def wrapper(*args, **kwargs):
        app.logger.info("Checking cookies...")
        if 'city' in request.cookies:
            app.logger.info("Cookies already exists.")
            return f(*args, **kwargs)
        app.logger.info("No cookie found.Creating new ones...")
        return get_cookie()
    return wrapper

# 路由直接挂载装饰器即可
@app.route('/')
@cookie_check
def base():
    return render_template('base.html')

内容的提问来源于stack exchange,提问作者Vipek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:06:03