我试图限制上传文件的大小,我将app.config [' MAX_CONTENT_LENGTH']设置为我想要的最大值,
我使用此代码显示错误。
@app.errorhandler(413)
def request_entity_too_large(error):
return 'File Too Large', 413
使用curl时,错误显示正确。 我使用Firefox / Safari进行了检查,我发现浏览器连接丢失/重置错误。
火狐
The connection was reset
The connection to the server was reset while the page was loading.
The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer's network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.
Safari浏览器
Can't open the page
...server unexpectedly dropped the connection...
服务器登录所有这些请求
192.168.1.1 - - [23/May/2015 15:50:34] "POST / HTTP/1.1" 413 -
为什么错误没有正确显示?
答案 0 :(得分:1)
这是与Flask的开发服务器相关的问题,您无需担心。使用生产服务器运行应用程序将解决此问题。
在Armin Ronacher发布的this snippet中,他说:
您可能会注意到,如果您开始不在传入的POST请求上访问.form或.files,某些浏览器会使用连接重置消息来表示这一点。如果您开始拒绝大于给定大小的上传,则会发生这种情况。
有些WSGI服务器为您解决了这个问题,有些则没有。例如,内置的Flask网络服务器非常愚蠢,不会尝试解决这个问题。
答案 1 :(得分:0)
李瑞(Grey Li)的答案解释了问题发生的原因。
但是我们仍然可以通过处理程序RequestEntityTooLarge
对其进行修复,该处理程序由werkzeug
在Flask中的abort(413)之前引发。
from werkzeug.exceptions import RequestEntityTooLarge
@app.errorhandler(413)
@app.errorhandler(RequestEntityTooLarge)
def app_handle_413(e):
return 'File Too Large', 413