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

Flask无法正确写入Cookie问题求助

问题分析与修复方案

你的问题核心出在Flask后端的loginAccount函数中:你已经创建了带有accessToken Cookie的响应对象,但最终返回的却是一个全新的jsonify(mensagem)响应,导致之前设置的Cookie根本没有被发送到浏览器。

修复步骤

  1. 返回正确的响应对象:放弃重新返回jsonify(mensagem),直接返回已经添加了Cookie的response实例。
  2. 补充跨域Cookie属性:跨域场景下,需要为Cookie设置SameSite、httponly等属性,确保浏览器能正确识别并保存。

修改后的user.py代码

from flask import jsonify, make_response
import jwt

def loginAccount():
    # 假设此处已正确获取email、db连接、SECRET_KEY等变量
    userId = str(list(db['users'].find({"email": email}))[0]['_id'])
    tokenId = jwt.encode({'userId': userId}, SECRET_KEY, algorithm='HS256')
    mensagem = {'message': f'Welcome to the CharTwo {email}!', 'tokenId': tokenId}

    response = make_response(jsonify(mensagem))
    # 配置Cookie参数,适配跨域场景
    response.set_cookie(
        'accessToken',
        tokenId,
        httponly=True,  # 防止XSS攻击,提升安全性
        secure=False,   # 本地开发用False,生产环境HTTPS下改为True
        samesite='Lax', # 跨域场景推荐配置,若需完全跨域可设为None(需配合secure=True)
        max_age=86400   # Cookie有效期,单位秒,按需调整
    )
    # 返回带Cookie的响应
    return response

额外验证点

  • 前端axios请求的withCredentials: true配置正确(你的代码已设置,无需修改)
  • 后端CORS的support_credentials=True配置生效(main.py中已配置,无需修改)

完成上述修改后,浏览器就能正常接收并保存accessToken Cookie了。

内容的提问来源于stack exchange,提问作者Rodrigo Bianco de Carvalho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:43:18