flask-cors的origin参数设置

flask-cors的跨域设置

近期公司要求,对所有的平台都必须加入跨域限制,不能使用*来表示access-control-allow-origin的值
由于不想设定一个白名单,并且如果使用配置文件的白名单方式,每次增加一个域名,就需要重新发布一次平台,太麻烦了,因此决定使用正则的方式来匹配

  • 在使用该模块的过程中,发现利用origin=*.example.com并不能匹配,会直接报错,通过看了这部分源码后了解到,flask-cors模块,对origin支持正则表达式,具体使用了re.match方法来解析的,因此这个参数后面,需要接一个完整的正则表达式
1
2
3
4
5
6
7
8
9
10
11
12
13
def create_app(config_name, zone):
"""
初始化flask app
:param config_name:
:return:
"""
app = Flask(__name__,instance_relative_config=True)
if zone == 'milk':
app.config.from_object(config_milk[config_name])
else:
app.config.from_object(config[config_name])
CORS(app, origins="http[s]?://.*.example.com[.hk]*[:]?[\d]*")
db.init_app(app)