欢迎访问宙启技术站
智能推送

如何使用Flask-CORS实现前后端跨域通信

发布时间:2023-12-24 14:48:42

Flask-CORS是一个用于解决Flask框架中跨域通信问题的扩展库。在默认情况下,浏览器会阻止跨域请求,从而导致前后端无法进行数据交互。Flask-CORS通过在Flask应用中添加CORS(跨域资源共享)标头,来允许跨域请求的发送和接收。

下面将演示如何使用Flask-CORS实现前后端跨域通信,并提供一个简单的使用例子。

首先,确保已安装Flask和Flask-CORS扩展库。可以使用以下命令进行安装:

pip install flask
pip install flask-cors

在Flask应用中添加CORS支持,需要在应用创建时初始化CORS扩展,并配置允许跨域请求的来源。

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})

在上面的示例中,CORS(app, resources={r"/*": {"origins": "*"}})初始化了CORS扩展,并配置了允许所有来源的跨域请求。

接下来,可以使用Flask的路由装饰器定义API接口,并在处理函数中返回跨域请求的响应。

@app.route('/api/data', methods=['GET'])
def get_data():
    data = {'name': 'John', 'age': 30}
    return jsonify(data)

在上述示例中,我们定义了一个GET请求处理函数get_data(),该函数返回一个名为data的字典。使用jsonify()函数将字典转换为JSON格式的响应。

最后,运行Flask应用程序。

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

现在,已经准备好了一个简单的Flask应用程序,支持前后端跨域通信。下面是如何使用该应用程序的前端示例代码:

<!DOCTYPE html>
<html>
<head>
    <title>Flask-CORS Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="root"></div>
    <script>
        // 发送GET请求到Flask API接口
        axios.get('http://localhost:5000/api/data')
            .then(function (response) {
                // 打印API返回的数据
                console.log(response.data);
                // 在页面上显示API返回的数据
                document.getElementById('root').innerText = JSON.stringify(response.data);
            })
            .catch(function (error) {
                console.log(error);
            });
    </script>
</body>
</html>

在上述示例中,我们使用axios库发送GET请求到Flask API接口,并在获取到响应后,将其打印到浏览器的控制台,并在页面上显示。

需要注意的是,浏览器可能会阻止跨域访问。根据浏览器的不同,可能需要在客户端代码中进行一些配置。可以在Flask应用中添加CORS支持来解决此问题。

以上就是使用Flask-CORS实现前后端跨域通信的示例,通过配置CORS支持,可以让前后端实现数据交互。