您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

是否可以限制每个路由的Flask 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标头。使用装饰器或手动检查,你只是进行了相同的测试,但是在视图生命周期中稍早一些。

Python 2022/1/1 18:24:26 有172人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶