【问题标题】:What does maxSwallowSize really do?maxSwallowSize 到底有什么作用?
【发布时间】:2021-10-30 01:21:46
【问题描述】:

我有一个 Spring Boot 后端,我刚刚通过配置 maxSwallowSize Tomcat 属性从 Angular 前端上传文件时解决了“ERR_CONNECTION_RESET”问题。我试图了解它究竟做了什么。 Tomcat 文档对我来说并不明显:

最大请求体字节数(不包括传输编码 开销)将被 Tomcat 吞下以进行中止的上传。一个 中止上传是当 Tomcat 知道请求正文将要 被忽略,但客户端仍然发送它。如果 Tomcat 不吞咽 客户端不太可能看到响应的主体。如果没有指定 将使用默认值 2097152(2 兆字节)。小于的值 大于零表示不应强制执行任何限制。

https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

我能得到一些帮助吗?

【问题讨论】:

    标签: java tomcat tomcat8


    【解决方案1】:

    如果您的 servlet 的 service() 方法退出(正常或异常)没有消耗整个客户端的请求正文,Tomcat 在重置连接之前仍将接受 maxSwallowSize 字节。这是必需的,因为大多数浏览器仅在发送整个请求后才读取服务器的响应(参见this question)。

    要使用请求正文,您需要:

    • 如果请求编码为application/x-www-form-urlencoded,则需要调用getParameter*方法之一,
    • 如果请求编码为multipart/form-data,则需要调用getPart*方法之一,
    • 在所有其他情况下,您需要阅读整个InputStream

    未消费的请求体通常是由错误引起的,包括参数解析或表单部分的错误。

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2011-04-18
      • 2019-11-03
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      相关资源
      最近更新 更多