首先看报错提示:
Access to XMLHttpRequest at ‘http://127.0.0.1:5000/users?query=&pagesize=5&pagenum=1’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
这个错误是因为浏览器的跨域请求安全策略所导致的,简单来说就是浏览器不允许通过 AJAX 发送跨域请求。
为了解决这个问题,需要在 Flask 中添加跨域访问的支持。可以使用 Flask-Cors 扩展来实现。
首先,需要安装 Flask-Cors 扩展:
pip install flask-cors
然后在 Flask 应用中添加如下代码:
from flask import Flask, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
# 定义路由和视图函数
上述代码通过 CORS(app)
启用了 Flask-Cors 扩展,这样就可以让浏览器允许跨域请求了。
如果你需要更精细的跨域控制,可以通过 CORS
对象的实例方法来进行配置,例如:
from flask import Flask, jsonify
from flask_cors import CORS
app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
# 定义路由和视图函数
上述代码指定了 resources
参数,表示只有 /api/*
路径下的请求允许跨域访问,而且允许任何来源的请求。