flask接口支持跨域设置方法
在Flask中,可以通过安装flask-cors
扩展来支持跨域请求。下面是使用flask-cors
扩展的示例代码:
from flask import Flask from flask_cors import CORS #ip install flask-cors app = Flask(__name__) CORS(app)
可以通过CORS
扩展的origins
参数来指定允许的来源
CORS(app, origins='http://example.com')
单个接口设置
@app.route('/api/some_endpoint') @cross_origin(origins='http://example.com', methods=['GET', 'POST']) def some_endpoint(): # 处理接口逻辑 return 'Hello, World!'
@app.route装饰器与@cross_origin装饰器请求方法冲突问题
如果在@app.route装饰器中定义了请求方法,而在@cross_origin装饰器中也定义了请求方法,那么它们之间会发生冲突。
在Flask中,@app.route装饰器用于指定接口的URL和请求方法。而@cross_origin装饰器用于指定接口是否支持跨域请求以及允许的来源、方法等。
如果在@app.route装饰器中指定了请求方法,那么只有匹配该请求方法的请求才会进入到对应的视图函数中。而@cross_origin装饰器中指定的请求方法只会影响跨域请求的处理,不会影响到接口的请求方法。
例如,如果在@app.route装饰器中指定了methods=['GET'],而在@cross_origin装饰器中指定了methods=['POST'],那么只有GET请求会进入到对应的视图函数中,而跨域请求则不受影响,仍然可以使用POST方法
from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) @app.route('/api/index', methods=['GET']) @cross_origin(methods=['POST']) def index(): if request.method == 'GET': # 处理GET请求 return 'Hello, GET!' elif request.method == 'POST': # 处理POST请求 return 'Hello, POST!'
标签:origin,跨域,python,app,cross,flask,route,请求 From: https://www.cnblogs.com/boye169/p/18323203