下面我将为你详细讲解“Flask框架踩坑之ajax跨域请求实现”的完整攻略。
在网络请求中,浏览器有一个同源策略,即只能在相同协议、相同域名、相同端口下进行通信。当一个请求的源与目标不同源时,就称为跨域请求。比如,在当前域名下的网页中,发起了一个向不同域名的服务器发出的请求,这就是跨域请求。
在实际开发中,有一些场景需要跨域请求,比如:
在Flask框架中,可以通过安装flask-cors
插件来实现跨域请求。
flask-cors
$ pip install flask-cors
在Flask应用中使用CORS可以采取如下方法:
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/api', methods=['GET', 'POST'])
def api():
return 'Hello, World!'
在这个例子中,我们使用了CORS
对象将app
实例作为一个参数传入,从而开启跨源访问。
除了在应用中使用CORS
对象外,在Flask-CORS
中还有其他一些更高级的用法,例如:
CORS
对象中指定跨源请求的域名OPTIONS
请求的自定义处理函数有了这些高级用法,我们可以根据不同的场景,灵活地配置跨域请求。
下面,我们通过两个示例来了解在Flask框架中,如何实现跨域请求。
$.ajax({
url: 'http://localhost:5000/api',
type: 'get',
success: function(res) {
console.log(res);
},
error: function(err) {
console.log(err);
}
});
# app.py
from flask import Flask, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/api', methods=['GET'])
def get_api():
data = {
'code': '200',
'msg': 'ok',
'data': 'Hello, World!'
}
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
$.ajax({
url: 'http://localhost:5000/api',
type: 'post',
dataType: 'json',
data: {'name': 'Tom', 'age': 18},
success: function(res) {
console.log(res);
},
error: function(err) {
console.log(err);
}
});
# app.py
from flask import Flask, jsonify, request
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/api', methods=['POST'])
def post_api():
name = request.form.get('name')
age = request.form.get('age')
data = {
'name': name,
'age': age
}
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
通过以上两个示例,我们就可以了解在Flask框架中,如何通过AJAX实现跨域请求。
本文链接:http://task.lmcjl.com/news/15556.html