当前位置: 代码网 > it编程>编程语言>Java > springboot2.7报错:request header is too large问题及解决

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

2026年01月13日 Java 我要评论
springboot2.7中,后台接口使用@requestparam进行传参,但是传入的参数内容过大,导致报错request header is too large一、报错内容问题原因:请求头超过了t

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 请求,将参数放在请求体中。

五、总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com