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}!' #其中 cross_origin 和 CORS 提供一些基本相同的参数。 #常用的我们可以配置 origins、methods、allow_headers、supports_credentials
三、配置参数说明
参数 | 类型 | 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 | 预检请求的有效时长 |