Python Flask Cors 问题

作者:编程家 分类: python 时间:2025-11-01

Python Flask Cors 是一个常见的问题,它涉及在使用 Flask 框架开发 Web 应用时,如何处理跨域资源共享(CORS)的问题。在开发 Web 应用中,由于浏览器的同源策略,前端页面无法直接访问其他域名下的资源。而当我们需要从前端页面访问后端 API 接口时,就需要解决跨域访问的问题。

什么是跨域资源共享(CORS)?

跨域资源共享(CORS)是一种机制,它允许服务器在 HTTP 响应中设置一些头部信息,从而告诉浏览器该服务器允许哪些域名的前端页面访问它的资源。通过这种机制,前端页面就能够在浏览器中通过 JavaScript 访问其他域名下的资源,实现跨域访问。

解决 Python Flask Cors 问题的方法

在 Flask 中,我们可以使用 Flask-CORS 扩展来解决跨域问题。Flask-CORS 提供了一些装饰器和配置选项,方便我们配置跨域访问的规则。

首先,我们需要安装 Flask-CORS 扩展。可以使用 pip 命令进行安装:

pip install -U flask-cors

安装完成后,在 Flask 应用中导入 Flask-CORS 模块,并使用 `@cross_origin()` 装饰器来指定允许跨域访问的规则。例如,我们可以通过以下代码允许所有域名的前端页面访问我们的 API 接口:

python

from flask import Flask

from flask_cors import CORS, cross_origin

app = Flask(__name__)

CORS(app)

@app.route('/')

@cross_origin()

def hello_world():

return 'Hello, World!'

在上述代码中,我们在 `app` 对象上调用了 `CORS(app)`,这样就将跨域访问的规则应用到了整个应用中。然后,在 `hello_world` 视图函数上使用了 `@cross_origin()` 装饰器,指定了该视图函数允许跨域访问。

自定义跨域访问规则

除了允许所有域名的访问,我们还可以根据具体需求自定义跨域访问的规则。可以使用 `CORS` 类的参数来指定允许访问的域名、允许的 HTTP 方法等。

例如,以下代码将允许 `example.com` 域名的前端页面访问我们的 API 接口,并且只允许使用 `GET` 和 `POST` 方法:

python

from flask import Flask

from flask_cors import CORS

app = Flask(__name__)

CORS(app, resources={r"/*": {"origins": "http://example.com", "methods": ["GET", "POST"]}})

@app.route('/')

def hello_world():

return 'Hello, World!'

在上述代码中,我们在调用 `CORS(app)` 时传递了一个 `resources` 参数,该参数是一个字典,用于指定跨域访问的规则。在规则中,我们通过 `r"/*"` 指定了所有路由都适用这个规则,然后指定了允许访问的域名和允许的 HTTP 方法。

Python Flask Cors 问题是 Web 开发中常见的一个问题,通过使用 Flask-CORS 扩展,我们可以轻松地解决跨域访问的问题。通过配置适当的规则,我们可以灵活地控制允许访问的域名和允许的 HTTP 方法,确保 Web 应用的安全性和稳定性。