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
相关产品推荐
相关产品推荐

