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

使用Flask-Cors后仍出现CORS错误的技术求助

Flask + Ngrok 遭遇CORS错误的解决方法

问题场景

学习Flask后端开发时,创建返回JSON数据的路由后遇到CORS错误,当前使用ngrok进行隧道转发,前端通过fetch请求接口。

Flask后端代码(main.py)

from flask import Flask, jsonify
from flask_cors import CORS

app = Flask(__name__)

CORS(app)

@app.route('/')
def hello():
    return 'Hello'

@app.route('/test')
def about():
    return jsonify({'key_one':'some testing value'})

if __name__ == "__main__":
    app.run()

前端JavaScript代码(main.js)

console.log("hello");

fetch("https://link.ngrok.io/test")
  .then((x) => x.json())
  .then((r) => console.log(r))
  .catch((e) => console.log(e));

前端HTML代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="css/style.css" rel="stylesheet">
    <script defer src='main.js'>
      
    </script>
  </head>
  <body>
    
  </body>
</html>

错误截图

CORS错误截图

解决步骤

  • 核对ngrok转发地址:每次启动ngrok都会生成新地址,确保fetch里的地址是当前ngrok控制台显示的有效地址,别用旧地址。
  • 优化CORS配置:全局配置可能存在匹配问题,给目标路由单独添加CORS装饰器,或者精准指定允许的资源:
    # 方式1:给单个路由加CORS
    from flask_cors import cross_origin
    
    @app.route('/test')
    @cross_origin()
    def about():
        return jsonify({'key_one':'some testing value'})
    
    # 方式2:全局配置指定资源
    CORS(app, resources={r"/test": {"origins": "*"}})
    
  • 匹配Flask与ngrok端口:Flask默认跑在5000端口,启动ngrok时要对应转发这个端口(ngrok http 5000),如果Flask改了端口,ngrok命令也要同步修改。
  • 清除浏览器缓存:浏览器可能缓存旧的CORS规则,强制刷新页面(Ctrl+Shift+R)或用无痕模式测试。
  • 重新安装依赖:确保flask-cors版本兼容,执行以下命令重装:
    pip uninstall flask-cors -y
    pip install flask-cors
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:47:11