如何轻松的在flask中解决跨域

目前,前后端分离的场景越来越多,涉及到前后端分离,我们就绕不开跨站。很多人使用flask的CORS,依然解决不了跨域,结合我开发平台的经验。跨站主要分为2步走。

第一步:在app.py中设置CORS

1、通过pip install 安装flask_cors,如果是linux非root登录的账户,需要执行:sudo pip install flask_cors

2、在app.py文件中引入flask_cors

3、在app入口使用CORS

代码如下:

#设置路径信息,避免通过命令行启动的时候,找不到软件包
import os,sys

curpath = os.path.abspath(os.path.dirname(__file__))
rootpath = os.path.split(curpath)[0]
sys.path.append(rootpath)

#引入flask组件
from flask import Flask
#引入flask cors
from flask_cors import CORS

#程序主入口
if __name__ == ‘__main__‘:
    #实例化flask
    app = Flask(__name__)
    #通过CORS,所有的来源都允许跨域访问
    CORS(app, resources=r‘/*‘)
    #接受任何ip地址的访问,并且使用多线程,设置接口为8081,不启动debug模式
    app.run(host="0.0.0.0", threaded=True, port=8081, debug=False)

?

第二步:

在各个blueprint中的路由设置请求头

import os, sys
curpath = os.path.abspath(os.path.dirname(__file__))
rootpath = os.path.split(curpath)[0]
sys.path.append(rootpath)

from flask import Blueprint, request, jsonify
from api import Timer

build = Blueprint("build", __name__)

@build.route(‘/builder/job‘, methods=[‘POST‘])
def JobBuild():
    res_dict = request.get_json()
    rst = jsonify(Timer.StartCron(ref_dict=res_dict))
   #在路由返回信息中设置请求头,允许远程访问
    rst.headers[‘Access-Control-Allow-Origin‘] = ‘*‘
    rst.headers[‘Access-Control-Allow-Method‘] = ‘POST‘ #如果该请求是get,把POST换成GET即可
    rst.headers[‘Access-Control-Allow-Headers‘] = ‘x-requested-with,content-type‘
    return rst

?

第三步:验证结果

如何轻松的在flask中解决跨域

前端请求访问成功

?

总结:

其实设置跨站很容易,主要是在app.py主程序入库设置CORS之后,在各个路由下再次设置header内容,缺一不可。

大家在使用python中有任何问题,欢迎留言,我将尽快给大家解答

?

如何轻松的在flask中解决跨域

上一篇:解决黑白群晖不能休眠的终极方案


下一篇:js 手机号码简单正则校验