• Spring Boot中的max-http-header-size配置


    概述

    默认情况下,Spring Boot Web 应用程序包括一个预配置的嵌入式 Web 服务器。但是,在某些情况下,我们希望修改默认配置以满足自定义要求。
    在本教程中,讲解如何在 Spring Boot 2.x 应用程序的application.properties文件中对请求标头进行设置和使用max-http-header-size属性。

    Max-HTTP-Header-Size

    Spring Boot 支持Tomcat、Undertow和Jetty作为嵌入式服务器。通常,我们在 Spring Boot 应用程序中的application.properties文件或application.yaml文件中进行服务器配置。
    大多数 Web 服务器都有自己的一组 HTTP 请求header大小限制。HTTP header值受服务器实现的限制。在 Spring Boot 应用程序中,最大 HTTP header大小是使用server.max-http-header-size 配置的。
    Tomcat和Jetty的实际默认值为8kB,Undertow的默认值为1MB。
    要修改最大 HTTP header大小,在application.properties文件中进行如下配置:

    server.max-http-header-size=1024000
    
    • 1

    从 Spring Boot 2.1 开始,可使用DataSize可解析值:

    server.max-http-header-size=10KB
    
    • 1

    请求头太大

    假设发送的请求的总 HTTP header大小大于max-http-header-size值。服务器以“400 Bad request”错误拒绝请求。在下一个示例中,我们将在日志文件中看到此错误。
    让我们创建一个控制器,它有一个名为 token 的header属性:

    @RestController
    @RequestMapping(value = "/request-header-test")
    public class MaxHttpHeaderSizeController {
        @GetMapping
        public boolean testMaxHTTPHeaderSize(@RequestHeader(value = "token") String token) {
        return true;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    接下来,让我们向application.properties文件添加一些属性:

    ## Server connections configuration
    server.tomcat.threads.max=200
    server.connection-timeout=5s
    server.max-http-header-size=8KB
    server.tomcat.max-swallow-size=2MB
    server.tomcat.max-http-post-size=2MB
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    当我们在token中传递一个大小大于 8kb的字符串值时,得到 400 错误,如下所示:
    在这里插入图片描述

  • 相关阅读:
    Java计算机毕业设计电商后台管理系统源码+系统+数据库+lw文档
    leaflet
    Knife4j系列--使用方法
    Langchain 代理 (Agents) ,赋能超级 LLMs
    spacemacs auto-complete 自动补全功能
    ASP.NET Core框架探索之主机搭建与运行
    干货分享:DevOps 持续交付体系的落地实践
    arcgis js api FeatureLayer加载时返回数据带*问题
    EFK部署centos7.9(二)head插件部署
    『第十章』仪态万千的雨燕:UIKit 和 SwiftUI
  • 原文地址:https://blog.csdn.net/tianzhonghaoqing/article/details/126519374