Flask实现跨域请求的处理方法

yipeiwu_com5年前Python基础

在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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python cumsum函数的具体使用

这个函数的功能是返回给定axis上的累计和函数的原型如下:详见 doc  numpy.cumsum(a, axis=None, dtype=None, out=None) &n...

python strip() 函数和 split() 函数的详解及实例

 python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split的功能,实际上strip是删除的意思;而split则是分割的意...

解决Python计算矩阵乘向量,矩阵乘实数的一些小错误

解决Python计算矩阵乘向量,矩阵乘实数的一些小错误

计算:Ax-b A: 2*2 x: 2*1 b: 2*1 so, Ax-b: 2*1 if __name__ == "__main__": A = np.array([[...

使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

表单是让用户与我们的网页应用程序交互的基本元素。Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包...

python使用Plotly绘图工具绘制柱状图

python使用Plotly绘图工具绘制柱状图

本文实例为大家分享了python使用Plotly绘图工具绘制柱状图的具体代码,供大家参考,具体内容如下 使用Plotly绘制基本的柱状图,需要用到的函数是graph_objs 中 Bar...