Duk*_*gal 15 python flask python-3.x
我知道可以在Flask中设置请求大小的总体限制:
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
Run Code Online (Sandbox Code Playgroud)
但我想确保一条特定的路由不接受超过一定大小的POST数据.
这可能吗?
Mar*_*ers 33
您需要检查具体路线本身; 你总是可以测试内容的长度; request.content_length是None一个整数值:
cl = request.content_length
if cl is not None and cl > 3 * 1024 * 1024:
abort(413)
Run Code Online (Sandbox Code Playgroud)
在访问请求中的表单或文件数据之前执行此操作.
你可以把它变成你的观点的装饰者:
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
Run Code Online (Sandbox Code Playgroud)
然后用它作为:
@app.route('/...')
@limit_content_length(3 * 1024 * 1024)
def your_view():
# ...
Run Code Online (Sandbox Code Playgroud)
这基本上就是Flask的作用; 当您尝试访问请求数据时,首先检查Content-Length标头,然后再尝试解析请求正文.通过装饰器或手动检查,您只需进行相同的测试,但在视图生命周期中稍早一些.
| 归档时间: |
|
| 查看次数: |
9052 次 |
| 最近记录: |