springboot2.7报错:request header is too large问题及解决

 更新时间:2026年01月13日 10:05:43   作者:五月天的尾巴  
本文详细介绍了在Spring Boot 2.7中使用@RequestParam传参时,请求头大小超过限制导致报错的解决方案,包括调整配置文件、通过代码配置和直接配置Tomcat等方法,并提醒注意事项

springboot2.7中,后台接口使用@RequestParam进行传参,但是传入的参数内容过大,导致报错 

request header is too large

一、报错内容

问题原因

请求头超过了tomcat的限制值。post请求是没有参数大小限制,但是服务器有自己的默认大小

SpringBoot内嵌的Tomcat服务器默认限制是8KB

二、原因分析与解决方案概述

方面说明建议或默认值
错误原因HTTP 请求头过大通常由于Cookie、Authorization、自定义头过大引起
Spring Boot 2.x 配置参数server.max-http-header-size单位支持 B, KB, MB
Spring Boot 3.x 配置参数server.max-http-request-header-size (3.x中max-http-header-size已被弃用)单位支持 B, KB, MB
Tomcat 默认值8KB (8192 bytes)
Undertow 默认值1MB
Jetty 默认值8KB

解决方案概述

主要通过调整配置文件增大请求头大小限制,并优化请求头内容

三、解决方法

3.1、调整应用程序配置(主要解决方案)

根据你的 Spring Boot 版本和使用的配置文件格式(properties 或 yml),进行如下配置:

Spring Boot 2.x 配置

application.properties 文件中添加:

# 设置最大 HTTP 请求头大小为 100KB (推荐初始值)
server.max-http-header-size=100KB

或者使用字节单位:

# 设置最大 HTTP 请求头大小为 102400 字节 (100KB)
server.max-http-header-size=102400

application.yml 文件中添加:

server:
  max-http-header-size: 100KB

或者:

server:
  max-http-header-size: 102400

Spring Boot 3.x 配置

从 Spring Boot 3.0 开始,max-http-header-size 参数已被弃用,建议使用 max-http-request-header-size

server:
    max-http-request-header-size: 12KB

3.2、通过代码配置(备用方案)

如果配置文件方式不生效,你可以在启动类或配置类中通过代码配置:

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ServerConfig {

    @Bean
    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> containerCustomizer() {
        return factory -> factory.addConnectorCustomizers(connector -> {
            connector.setMaxHttpHeaderSize(102400); // 设置为100KB
        });
    }
}

3.3、直接配置 Tomcat(适用于外部 Tomcat)

如果你的 Spring Boot 应用部署在独立的 Tomcat 服务器上,需要修改 Tomcat 的 server.xml 文件:

<Connector 
    port="8080" 
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    maxHttpHeaderSize="102400" />

重启 Tomcat 使配置生效。

四、注意事项

  • 不要盲目设置过大值:设置过大的请求头限制会增加内存消耗,在并发请求时可能造成内存溢出(OOM)。应根据实际业务需求设置合理值。
  • 检查反向代理配置:如果你的应用前面有 NginxApache 等反向代理服务器,这些服务器也可能有类似的请求头大小限制(例如 Nginx 的 large_client_header_buffers 指令),需要一并调整。

优化请求头设计

  • 避免在请求头中存储大量数据(如大型 Base64 编码的图片)。
  • 考虑将大数据存储在请求体(Body)而非请求头中。
  • 对于 GET 请求参数过长的情况,考虑改为 POST 请求,将参数放在请求体中。

五、总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Java下载文件时文件名乱码问题解决办法

    Java下载文件时文件名乱码问题解决办法

    我最近在开发时遇到了文件另存为时文件名出现乱码,在火狐上正常的文件名,在IE中又出现乱码问题,然后好不容易在IE下调试好了文件名乱码问题,在火狐下又出现乱码,最后终于感觉这样是能解决了。具体如下:
    2013-04-04
  • IDEA mybatis Mapper.xml报红的最新解决办法

    IDEA mybatis Mapper.xml报红的最新解决办法

    这篇文章主要介绍了IDEA mybatis Mapper.xml报红的解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Spring Boot Admin的使用详解(Actuator监控接口)

    Spring Boot Admin的使用详解(Actuator监控接口)

    这篇文章主要介绍了Spring Boot Admin的使用详解(Actuator监控接口),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Mybatis Generator 获取不到字段注释的解决

    Mybatis Generator 获取不到字段注释的解决

    这篇文章主要介绍了Mybatis Generator 获取不到字段注释的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 实践讲解SpringBoot自定义初始化Bean+HashMap优化策略模式

    实践讲解SpringBoot自定义初始化Bean+HashMap优化策略模式

    本篇讲解了SpringBoot自定义初始化Bean+HashMap优化策略模式,通过实践的方式更通俗易懂,对此不了解的同学跟着小编往下看吧
    2021-09-09
  • 在Spring Boot中从类路径加载文件的示例

    在Spring Boot中从类路径加载文件的示例

    创建Spring Boot Web应用程序时,有时有时需要从类路径中加载文件;war和jar的加载文件格式是不一样的,在下面,您将找到在WAR和JAR中加载文件的解决方案。
    2020-10-10
  • SpringBoot接入deepseek深度求索示例代码(jdk1.8)

    SpringBoot接入deepseek深度求索示例代码(jdk1.8)

    这篇文章主要介绍了SpringBoot接入deepseek深度求索的相关资料,包括建API key、封装询问Deepseek的工具方法(在配置文件中添加key值)、调用测试并确保端口一致例如8091,最后运行结果,需要的朋友可以参考下
    2025-02-02
  • java累加和校验实现方式16进制(推荐)

    java累加和校验实现方式16进制(推荐)

    下面小编就为大家带来一篇java累加和校验实现方式16进制(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • SpringBoot如何打包自定义生成的包名

    SpringBoot如何打包自定义生成的包名

    这篇文章主要介绍了SpringBoot如何打包自定义生成的包名问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • java实现多人多牌数比较游戏

    java实现多人多牌数比较游戏

    这篇文章主要为大家详细介绍了java实现多人多牌数比较游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论