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

使用Axios向本地Flask服务器POST请求无法接收Cookie的问题求助

Flask + React 跨域会话维持问题排查与解决

你的核心问题是登录请求成功但响应头无Set-Cookie字段,导致会话无法维持,下面是针对性的排查和修复方案:

你设置了SESSION_COOKIE_SECURE=True,这个配置会让Flask仅在HTTPS连接下发送会话Cookie。但本地开发用的是HTTP协议(http://127.0.0.1),浏览器会直接忽略带Secure标记的Cookie,自然看不到Set-Cookie响应头。

修复:
本地开发时将该值改为False,生产环境部署到HTTPS服务时再改回True:

app.config.update(
    SESSION_COOKIE_SECURE=False,  # 本地开发必须设为False
    SESSION_COOKIE_HTTPONLY=True,  # 建议开启,防止XSS攻击(之前注释掉了,现在打开)
    SESSION_COOKIE_SAMESITE='None',
)

2. 冗余的响应头设置

你的create_login_return函数手动添加了Access-Control-Allow-Credentials,但已经通过CORS(app,supports_credentials=True)配置过了,重复添加无意义,建议移除:

def create_login_return(error_message=None, user=None):
    resp = jsonify({"error_message": error_message, "user": user})
    # 移除下面这行,CORS扩展已经自动处理
    # resp.headers.add('Access-Control-Allow-Credentials', 'true')
    return resp

3. 确保Flask-Login的User类符合要求

Flask-Login的login_user方法依赖User类实现特定接口,你没有贴出User类代码,需要确保它继承UserMixin或者手动实现必要方法,否则会话ID无法正确生成:

from flask_login import UserMixin

class User(UserMixin):
    def __init__(self, admin, user_id, name, email, auth):
        self.admin = admin
        self.id = user_id  # UserMixin需要id属性,对应user_id
        self.name = name
        self.email = email
        self.auth = auth

如果不继承UserMixin,必须手动实现is_authenticated、is_active、is_anonymous、get_id这四个方法。

4. Axios请求优化

你手动对请求体做了JSON.stringify,但Axios会自动处理对象转JSON,直接传对象更简洁,同时可以省略默认的Content-Type头:

const handleSubmit = async () => {
    const res = await axios.post("http://127.0.0.1:6969/login", {
        user_id: userID,
        pwd: userPwd
    }, {
        withCredentials: true,  // 保持这个配置,必须开启
    })
    console.log(res.data.error_message)
}

最终验证步骤

  1. 重启Flask服务,重新发起登录请求
  2. 打开浏览器开发者工具(F12)→ 网络 → 查看登录请求的响应头,确认出现Set-Cookie字段
  3. 后续请求时,浏览器会自动携带该Cookie,Flask端通过current_user即可获取登录状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:56:02