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!'

  

 

 posted on 2024-07-25 15:15  boye169  阅读(4)  评论(0编辑  收藏  举报