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

Flask项目中flask run与python3 app.py端口不一致及CORS问题求助

Flask CLI启动端口与CORS问题解决方案

一、解决flask run使用默认5000端口的问题

代码中if __name__ == "__main__"块里的app.run(port=8000)仅对python3 app.py启动方式生效,flask run通过Flask CLI启动时不会读取该块内的配置,因此仍使用默认5000端口。以下是三种解决方式:

  • 方法1:环境变量配置
    在.env文件中添加端口配置:
    FLASK_RUN_PORT=8000
    
    启动前确保加载.env(如执行source .env或使用python-dotenv包),flask run会自动读取该端口。
  • 方法2:启动命令指定端口
    直接在命令行指定端口启动:
    flask run --port 8000
    
  • 方法3:代码全局配置端口
    在创建Flask实例后添加全局端口配置,两种启动方式都会生效:
    app = Flask(__name__)
    app.config['SERVER_NAME'] = 'localhost:8000'
    
    注意:此方式会固定域名和端口,灵活访问场景下需谨慎使用。

二、解决flask run时的CORS错误

该问题仅在flask run时出现,大概率是Flask调试模式的自动重载器导致CORS配置在子进程中未正确生效,可尝试以下方案:

  • 方案1:禁用重载器启动
    启动时添加--no-reload参数,避免子进程重载影响CORS配置:
    flask run --port 8000 --no-reload
    
  • 方案2:为蓝图单独配置CORS
    给注册的display_bp蓝图单独添加CORS配置,确保蓝图路由的跨域规则生效:
    from flask_cors import CORS
    # ... 其他代码 ...
    app.register_blueprint(display_bp)
    # 为蓝图配置CORS
    CORS(display_bp, resources={r"/*": {"origins": "*"}}, supports_credentials=True)
    
  • 方案3:调整CORS初始化顺序
    先完成所有蓝图注册,再初始化CORS,确保全局规则覆盖所有路由:
    app = Flask(__name__)
    app.config.from_object(__name__)
    # 先注册蓝图
    app.register_blueprint(display_bp)
    # 后初始化CORS
    CORS(app, resources={r"/*": {"origins": "*"}}, supports_credentials=True)
    
  • 方案4:验证调试模式影响
    临时修改.env中的FLASK_DEBUG=False,关闭调试模式后启动验证,确认是否为调试重载器导致的问题。

内容的提问来源于stack exchange,提问作者Lara-Codes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:22:37