前后端分离项目中,后端使用 Flask 编写接口时,通常需要处理跨域请求(CORS)以及前端联调阶段的接口访问问题。以下记录基本配置方式。


一、跨域问题产生原因

浏览器出于安全考虑,禁止前端脚本直接请求不同源的资源。不同源包括:

  • 不同协议(http vs https)
  • 不同域名
  • 不同端口

联调开发时,常见报错:
Access to XMLHttpRequest at 'http://localhost:5000/api/xxx' from origin 'http://localhost:5173' has been blocked by CORS policy


二、使用 Flask-CORS 快速解决

安装扩展:

pip install flask-cors

配置方式一:全局允许跨域

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

配置方式二:限定路径、方法、来源

from flask_cors import CORS

CORS(app, resources={
    r"/api/*": {"origins": "http://localhost:5173"}
})

三、接口示例

@app.route('/api/hello')
def hello():
    return {"message": "Hello from Flask"}

前端可通过 fetch / axios 请求该接口:

fetch('http://localhost:5000/api/hello')
  .then(res => res.json())
  .then(data => console.log(data))

或使用 axios:

axios.get('http://localhost:5000/api/hello')
     .then(res => console.log(res.data))

四、调试常见场景

  • Flask 开启 debug 模式后自动重启(使用 app.run(debug=True)
  • 避免浏览器缓存导致调试数据不同步,可使用 network disable cache
  • 前端建议统一封装接口请求函数,便于联调和切换环境

五、小结

通过 Flask-CORS 插件可以快速支持跨域访问,适用于本地开发与正式环境分离部署。建议后期根据实际情况限制来源、方法等跨域策略。