Python | Flask 解决跨域问题

一.引入库

pip install flask-cors

二.配置

flask-cors 有两种用法,一种为全局使用,一种对指定的路由使用

1. 使用 CORS函数 配置全局路由

from flask import Flask, request
from flask_cors import CORS
	
app = Flask(__name__)
CORS(app, supports_credentials=True)
其中 CORS 提供了一些参数帮助我们定制一下操作。
常用的我们可以配置 origins、methods、allow_headers、supports_credentials

2. 使用 @cross_origin 来配置单行路由

from flask import Flask, request
from flask_cors import cross_origin

app = Flask(__name__)

@app.route('/')
@cross_origin(supports_credentials=True)
def hello():
    name = request.args.get("name", "World")
    return f'Hello, {name}!'

配置参数说明

参数 类型 Head 默认 说明
resources 字典、迭代器或字符串 全部 配置允许跨域的路由接口
origins 列表、字符串或正则表达式 Access-Control-Allow-Origin * 配置允许跨域访问的源
methods 列表、字符串 Access-Control-Allow-Methods [GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE] 配置跨域支持的请求方式
expose_headers 列表、字符串 Access-Control-Expose-Headers None 自定义请求响应的Head信息
allow_headers 列表、字符串或正则表达式 Access-Control-Request-Headers * 配置允许跨域的请求头
supports_credentials 布尔值 Access-Control-Allow-Credentials False 是否允许请求发送cookie
max_age timedelta、整数、字符串 Access-Control-Max-Age None 预检请求的有效时长

总结

在 flask 的跨域配置中,我们可以使用 flask-cors 来进行配置,其中 CORS 函数 用来做全局的配置, @cross_origin 来实现特定路由的配置

参考

https://www.jianshu.com/p/66f34be9cf81

你可能感兴趣的:(python,Web,python,flask)