title: Flask跨域方案
date: 2022-02-08 16:28:55
categories: 开发

tags: [Flask,跨域]

很容易搜索到多种解决方法,暂先记录几种最简单的。

为response添加headers

  1. 使用make_response先创建响应,再给响应添加headers
@app.route('/')
def index():
    rsp = make_response('Hello world.')
    rsp.headers['Access-Control-Allow-Origin'] = '*'
    return rsp
  1. return响应三元组(response, status, headers)
@app.route('/')
def index():
    return 'Hello world', 200, {'Access-Control-Allow-Origin':'*'}

注册请求回调添加headers

当大量路由都需要允许跨域时,为每个路由逐个添加变得非常麻烦且不易维护。这时可以使用Flask提供的回调接口为请求注册回调,自动添加Access-Control-Allow-Origin的header。

@app.after_request
def headers_hook(response):
    if request.method == 'GET':
        response.headers['Access-Control-Allow-Origin'] = '*'
    return response
# 同样可以将app替换为蓝图在局部开启跨域