Springboot出现错误:
java.lang.IllegalArgumentException: Invalid character found in method name [0x030x000x00/*0xe00x000x000x000x000x00Cookie:]. HTTP method names must be tokens at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:417) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888) [tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597) [tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.41.jar:9.0.41] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_05] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_05] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.41.jar:9.0.41] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_05]
解决方法:
Max-HTTP-Header-Size
Spring Boot 支持 Tomcat、Undertow 和 Jetty 作为嵌入式服务器。 通常,在 Spring Boot 应用程序中的 application.properties 文件或 application.yaml 文件中编写服务器配置。
大多数 Web 服务器都有自己的一组 HTTP 请求标头大小限制。 HTTP 标头值受服务器实现的限制。 在 Spring Boot 应用程序中,最大 HTTP 标头大小是使用 server.max-http-header-size 配置的。
Tomcat和Jetty的实际默认值为8kB,Undertow的默认值为1MB。
要修改最大 HTTP 标头大小,将该属性添加到 application.properties 文件中:
server.max-http-header-size=20000
同样对于 application.yaml 格式:
server: max-http-header-size: 20000
从 Spring Boot 2.1 开始,将使用 DataSize 可解析值:
server.max-http-header-size=10KB
3.请求头太大
假设发送的请求的总 HTTP 标头大小大于 max-http-header-size 值。 服务器以“400 Bad request”错误拒绝请求(java.lang.IllegalArgumentException: Request header is too large)。
文章评论