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

React调用Flask API遭遇CORS错误,多种尝试仍无法解决

解决React调用Flask API时的CORS阻止问题

你的核心问题出在两个地方:一是手动添加Access-Control-Allow-Origin请求头时没有指定具体源,二是虽然导入了flask-cors但从未真正启用它。以下是具体修复方案:

修复步骤

1. 确保已安装flask-cors

如果还没安装,先执行:

pip install flask-cors

2. 二选一:全局启用CORS或使用路由装饰器

方案一:全局启用CORS(推荐开发环境快速验证)

修改Flask代码,在创建app实例后直接启用CORS,指定允许的源(你的React服务地址http://localhost:5173):

from flask import Flask
from flask_cors import CORS
from flask import jsonify

app = Flask(__name__)
# 全局允许指定源的跨域请求
CORS(app, origins="http://localhost:5173")

@app.route("/", methods=["GET"])
def get_example():
    """GET in server"""
    return jsonify(message="Simple server is running")

if __name__ == '__main__':
   app.run(debug=True)

方案二:针对单个路由启用CORS

如果只想给特定路由开跨域,用@cross_origin装饰器:

from flask import Flask
from flask_cors import cross_origin
from flask import jsonify

app = Flask(__name__)

@app.route("/", methods=["GET"])
@cross_origin(origins="http://localhost:5173")
def get_example():
    """GET in server"""
    return jsonify(message="Simple server is running")

if __name__ == '__main__':
   app.run(debug=True)

3. 移除无效的手动header设置

删掉你代码中这一行:

response.headers.add("Access-Control-Allow-Origin")

这行代码没有赋值,完全无效,还可能和Flask-CORS的自动设置冲突。

验证方法

  1. 重启Flask服务
  2. 运行React应用,打开浏览器控制台,查看是否还存在CORS报错

注意事项

  • 开发环境可以临时用CORS(app)允许所有源,但生产环境必须指定具体的业务域名,避免安全风险。
  • 确认React和Flask的端口号正确(你的代码里是5173和5000,没问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:22:49