当前位置: 首页 > 面试题库 >

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

隗翰海
2023-03-14
问题内容

我知道可以通过以下方法在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标头。使用装饰器或手动检查,你只是进行了相同的测试,但是在视图生命周期中稍早一些。



 类似资料:
  • 问题内容: 是否可以仅针对XHR请求限制Symfony 2路由?我想声明只能通过AJAX访问的路由。 我不想像这样在每个AJAX特定操作中添加一些额外的行: 我想定义: AJAX请求的一条规则 对相同URL进行GET / POST请求的一条规则 为了避开上述情况。 问题答案: 我知道这个问题有点老,但是与此同时 ,Symfony 2.4* 中引入 了 一种 新的解决方法 。 * 匹配表达式 对于a

  • 问题内容: 我正在使用javascript和htmlcanvas调整jpeg图像的大小。调整大小后,我在锚标记中用作href属性,以提供一个链接,用户可以在其中下载调整大小的图像。 在一定的图像尺寸下效果很好。 似乎不同的浏览器对数据URL的大小有不同的限制,如下所述 在chrome中,当我超出数据URL大小限制时,单击下载链接不会发生任何事情。没有错误或任何东西(据我所知)。 是否可以通过编程方

  • 问题内容: 我正在尝试使用jQuery Ajax将页面中的数据数组发送到MVC Action。这是我的jQuery代码: 让我解释一下。我有一个动态生成的HTML表,我需要将此数据存储到数据库中。在jQuery中,我遍历表有一个循环,我将数组中每一行的数据存储起来。然后,我使用Ajax将这些数据传递到MVC Action中。 这是我的问题开始的地方…我已经意识到有时会按预期进行,但是有时我会从Aj

  • 我试图用vba做一个按钮来删除Excel表中的一行,但当我按下按钮并选择不止一行或许多单元格时,我想限制从E到I的选择(和行的数量无关)这里是我的代码,非常感谢,希望你能帮助我,我还没有找到任何类似的东西。

  • 问题内容: 我们有要与HDFS集成的特定算法。该算法要求我们在本地访问数据(该工作将专门在中完成)。但是,我们确实希望在分发文件方面(提供可靠性和条带化)利用HDFS。计算完成后,我们将使用来简单地将答案发送回去,而不是执行任何其他工作。避免使用网络是一个明确的目标。是否存在允许我们限制网络数据访问的配置设置,以便在启动MapReduce作业时仅访问其本地DataNode? 更新: 添加一些上下文

  • 问题内容: 基本路线是这样的: 是否可以命名该路由并在任何模板中使用它,以便可以像这样使用它: 灵感来自Django :) 问题答案: 没有开箱即用的机制。但是,您可以模仿Django的样式:定义文件,该文件将包含URL数组。首先开始: myviews.js urls.js 现在在 app.js (或任何主文件)中,您需要将URL绑定到Express。例如这样: app.js 现在,您可以定义自定