首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >springboot3servlet和tomcat请求大小限制

springboot3servlet和tomcat请求大小限制

作者头像
阿超
发布2024-12-10 09:44:02
发布2024-12-10 09:44:02
3.1K1
举报
文章被收录于专栏:快乐阿超快乐阿超

兴趣是最好的老师,其次是耻辱。——胖子邓

代码语言:txt
复制
spring.servlet.multipart.max-file-size=1GB
spring.servlet.multipart.max-request-size=1GB
server.tomcat.max-http-form-post-size=1GB
server.tomcat.max-http-post-size=1GB
server.tomcat.max-http-response-header-size=1GB
server.tomcat.max-swallow-size=1GB

就是这几个配置

1. spring.servlet.multipart.max-file-size

作用:设置单个文件的最大上传大小。

默认值:1MB

范围:适用于 multipart/form-data 请求中,每个文件的大小限制。

示例

代码语言:txt
复制
spring.servlet.multipart.max-file-size=1GB

允许上传的单个文件最大为 1GB。

2. spring.servlet.multipart.max-request-size

作用:设置整个请求的最大大小,包括所有文件和表单字段的总和。

默认值:10MB

范围:适用于 multipart/form-data 请求的整体大小。

示例

代码语言:txt
复制
spring.servlet.multipart.max-request-size=1GB

如果总上传的文件大小和表单数据超过 1GB,会抛出 MaxUploadSizeExceededException

3. server.tomcat.max-http-form-post-size

作用:限制 HTTP 表单提交(application/x-www-form-urlencoded)的最大 POST 请求大小。

默认值:2MB

范围:仅适用于传统表单 POST 请求,不包括文件上传。

示例

代码语言:txt
复制
server.tomcat.max-http-form-post-size=1GB

允许表单 POST 数据最大为 1GB。

4. server.tomcat.max-http-post-size

作用:限制 HTTP POST 请求的最大数据大小。

默认值:2MB

范围:适用于所有 POST 请求的数据限制,包括 application/jsonmultipart/form-data

区别:这是 Tomcat 提供的全局限制,与 Spring Boot 的 max-file-sizemax-request-size 配置配合使用。

示例

代码语言:txt
复制
server.tomcat.max-http-post-size=1GB

允许所有 POST 数据(包括文件和非文件)最大为 1GB。

5. server.tomcat.max-http-response-header-size

作用:限制 HTTP 响应头的最大大小。

默认值:8KB

范围:适用于 HTTP 响应中所有头字段的总大小。

场景

  • 如果服务器需要返回很大的 Set-Cookie 或自定义头信息,需要增加此值。

示例

代码语言:txt
复制
server.tomcat.max-http-response-header-size=1GB

允许 HTTP 响应头的总大小最大为 1GB。

6. server.tomcat.max-swallow-size

作用:限制在请求或响应出错时,Tomcat 能够吞下的剩余数据大小。

默认值:2MB

范围

  • 如果请求的数据大小超过了 max-post-sizemax-http-form-post-size,Tomcat 默认会吞掉超过部分的数据。
  • max-swallow-size 限制了这些被丢弃的数据大小。
  • 设置为 -1,表示无限制。

示例

代码语言:txt
复制
server.tomcat.max-swallow-size=1GB

如果请求被拒绝(例如文件过大),最多仍然允许吞掉 1GB 的数据。

如何选择配置

  1. 文件上传场景
    • 配置 spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size,这是 Spring Boot 针对 multipart 请求的专用配置。
    • 如果 Tomcat 的全局限制更小,还需要调整 server.tomcat.max-http-post-size
  2. 表单提交场景
    • 配置 server.tomcat.max-http-form-post-size 以适应大表单数据提交。
    • 如果数据中包含文件,还需要同时调整 max-http-post-size
  3. 响应头限制
    • 如果你的应用需要返回较大的头信息(例如 Set-Cookie 或长 token),需要调整 server.tomcat.max-http-response-header-size
  4. 吞吐大数据场景
    • 如果请求数据较大且频繁出错,需要调整 server.tomcat.max-swallow-size,防止吞掉数据过多。

最佳实践

  • 不要设置极大的值(如 1GB),因为这可能会导致内存溢出或性能问题。
  • 调整配置时,尽量依据实际需求并确保客户端(如浏览器、前端应用)支持相应的大小限制。
  • 配置 Tomcat 和 Spring Boot 限制时,注意它们之间的相互关系,避免设置冲突。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1. spring.servlet.multipart.max-file-size
  • 2. spring.servlet.multipart.max-request-size
  • 3. server.tomcat.max-http-form-post-size
  • 4. server.tomcat.max-http-post-size
  • 5. server.tomcat.max-http-response-header-size
  • 6. server.tomcat.max-swallow-size
  • 如何选择配置
  • 最佳实践
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档