HttpRequest在tomcat中允许的最大大小?

mab*_*zer 51 java tomcat

我可以在一个单独发送的最大数据大小HttpURLConnectionTomcat多少?请求大小是否有任何限制?

Fre*_*man 61

您必须修改两个可能的限制:

conf\server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
                maxPostSize="67589953" />
Run Code Online (Sandbox Code Playgroud)

webapps\manager\WEB-INF\web.xml

<multipart-config>
  <!-- 52MB max -->
  <max-file-size>52428800</max-file-size>
  <max-request-size>52428800</max-request-size>
  <file-size-threshold>0</file-size-threshold>
</multipart-config>
Run Code Online (Sandbox Code Playgroud)

  • 如果我的web xml中没有multipart-config标签怎么办?是否有默认值? (4认同)
  • 我的web xml中也没有multipart-config标签.仅编辑server.xml没有任何区别.你能否告诉我在表格参数值大于2MB时收到POST请求需要做些什么更改? (2认同)
  • 仅供参考 - 52428800 是 50MB,而不是 52MB。 (2认同)

sta*_*ker 51

连接器部具有参数

maxPostSize

POST的最大大小(以字节为单位)将由容器FORM URL参数解析处理.可以通过将此属性设置为小于或等于0的值来禁用该限制.如果未指定,则此属性设置为2097152(2兆字节).

另一个限制是:

maxHttpHeaderSize请求和响应HTTP标头的最大大小,以字节为单位指定.如果未指定,则此属性设置为4096(4 KB).

你找到了他们

$TOMCAT_HOME/conf/server.xml
Run Code Online (Sandbox Code Playgroud)

  • 将maxPostSize的值设置为0会导致0 POST大小限制.对于无限大小值,必须小于0. (3认同)
  • 不过,这不会影响允许的最大 POST 大小,只是 Tomcat 将尝试解析为 www-form-urlencoded 的最大大小。 (2认同)

Fan*_*ing 13

完整的答案

1.默认(tomcat全新安装)

当您从他们的官方网站(今天的 tomcat 版本 9.0.26)下载 tomcat 时,您安装到 tomcat 的所有应用程序都可以处理无限大小的HTTP 请求,因为应用程序本身对请求大小没有任何限制。

但是,当您尝试在 tomcat 的管理器应用程序中上传应用程序时,该应用程序的默认 war 文件限制为50MB。例如,如果您尝试安装 Jenkins,例如今天的 77 MB,它将失败。

2.配置tomcat的每端口http请求大小限制

Tomcat 本身对每个端口都有大小限制,这在conf\server.xml. 这是由maxPostSize每个Connector(端口)的属性控制的。如果此属性不存在(默认情况下),则对请求大小没有限制

要对特定端口添加限制,请为属性设置字节大小。例如,默认 8080 端口的以下配置将请求大小限制为 200 MB。这意味着所有安装在 8080 端口下的应用程序现在都有 200MB 的大小限制

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxPostSize="209715200" />
Run Code Online (Sandbox Code Playgroud)

3. 配置应用级大小限制

通过端口级别大小限制后,您仍然可以配置应用程序级别限制。这也意味着应用程序级别限制应小于端口级别限制。可以通过每个 servlet 或 web.xml 文件中的注释来完成限制。同样,如果根本没有设置,则请求大小没有限制

通过java注解设置限制

@WebServlet("/uploadFiles")
@MultipartConfig( fileSizeThreshold = 0, maxFileSize = 209715200, maxRequestSize = 209715200)
public class FileUploadServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

通过 web.xml 设置限制

<web-app>
  ...
  <servlet>
    ...
    <multipart-config>
      <file-size-threshold>0</file-size-threshold>
      <max-file-size>209715200</max-file-size>
      <max-request-size>209715200</max-request-size>
    </multipart-config>
    ...
  </servlet>
  ...
</web-app>
Run Code Online (Sandbox Code Playgroud)

4. 附录 - 如果您在尝试通过 Tomcat 的 Manager 应用程序安装应用程序时看到文件上传大小错误

Tomcat 的 Manager 应用程序(默认为 localhost:8080/manager)只不过是一个默认的 Web 应用程序。默认情况下,该应用web.xml的请求限制配置为50MB。要通过此管理器应用程序安装(上传)大小大于 50MB 的应用程序,您必须更改限制。从中打开管理器应用程序的 web.xml 文件webapps\manager\WEB-INF\web.xml并按照上述指南更改大小限制,最后重新启动 tomcat。