Flask实现跨域请求的处理方法实现跨域请求的处理方法
在Flask开发RESTful后端时,前端请求会遇到跨域的问题。下面是解决方法:
使用 flask-cors库可以很容易的解决
pip install flask-cors
两种方法,一个是全局/批量的,一个是单一独立的:
安全起见,一般来说使用独立的方式会常用一些。
1.独立方式独立方式
通过给路由添加@cross_origin标识即可
from flask import Flask, jsonify
from flask_cors import cross_origin
@app.route('/upload', methods=['POST', 'OPTIONS'])
@cross_origin()
def upload():
# todo
result_text = {"result": "True"}
return jsonify(result_text)
2.全局方式全局方式
也很简单:
from flask import Flask
from flask_cors import CORS
if __name__ == '__main__':
app.run(host='0.0.0.0', threaded=True, debug=True)
CORS(app)
这样所有的路由都会支持跨域了。
3.批量方式批量方式
还有根据路由正则来批量控制等方式,更加灵活,可以查阅官方文档。
对请求的对请求的Response header中加入中加入header
@app.after_request
def af_request(resp):
"""
#请求钩子,在所有的请求发生后执行,加入headers。
:param resp:
:return:
"""
resp = make_response(resp)
resp.headers['Access-Control-Allow-Origin'] = '*'
resp.headers['Access-Control-Allow-Methods'] = 'GET,POST'
resp.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'
return resp
您可能感兴趣的文章您可能感兴趣的文章:Flask框架中request、请求钩子、上下文用法分析Flask之请求钩子的实现从源码解析Python的Flask框架
中request对象的用法Flask中获取小程序Request数据的两种方法浅谈flask中的before_request与after_request浅谈flask截获
所有访问及before/after_request修饰器flask使用session保存登录状态及拦截未登录请求代码Flask实现异步非阻塞请求功能实
例解析Flask web开发处理POST请求实现(登录案例)原生JS实现Ajax跨域请求flask响应内容浅谈flask源码之请求过程Flask
框架请求钩子与request请求对象用法实例分析