是否可以限制每个路由的Flask POST数据大小?

我知道可以通过以下方法在Flask中设置请求大小的整体限制:

app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024

但是我想确保一个特定的路由将不接受特定大小的POST数据。

回答:

你需要检查一下特定路线本身;你可以随时测试内容长度;request.content_length是一个None或整数值:

cl = request.content_length

if cl is not None and cl > 3 * 1024 * 1024:

abort(413)

在访问请求中的表单或文件数据之前,请执行此操作。

你可以将其变成装饰器以供查看:

from functools import wraps

from flask import request, abort

def limit_content_length(max_length):

def decorator(f):

@wraps(f)

def wrapper(*args, **kwargs):

cl = request.content_length

if cl is not None and cl > max_length:

abort(413)

return f(*args, **kwargs)

return wrapper

return decorator

然后将其用作:

@app.route('/...')

@limit_content_length(3 * 1024 * 1024)

def your_view():

# ...

本质上这就是Flask所做的;当你尝试访问请求数据时,在尝试解析请求正文之前,首先检查Content-Length标头。使用装饰器或手动检查,你只是进行了相同的测试,但是在视图生命周期中稍早一些。

以上是 是否可以限制每个路由的Flask POST数据大小? 的全部内容, 来源链接: utcz.com/qa/433711.html

回到顶部