admin管理员组文章数量:1608626
【异常】SpringBoot报错 Error parsing HTTP request header Invalid character found in method name
Invalid character found in method name. HTTP method names must be tokens
原因1: ssl证书到期了
解决方案:续期ssl证书
原因2: Tomcat的header缓冲区大小不够
修改tomcat缓冲区大小
maxHttpHeaderSize
Springboot application.yml
server:
tomcat:
uri-encoding: UTF-8
max-http-header-size: 8192
TOMCAT 配置文件
<Connector URIEncoding="UTF-8" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
useBodyEncodingForURI="false"
enableLookups="false"
connectionTimeout="20000"
redirectPort="8443" maxHttpHeaderSize="你想要的大小"/>
如:
<Connector port="8080" executor="tomcatThreadPool"
protocol="HTTP/1.1"
maxThreads="1000"
maxHttpHeaderSize="8192"
minSpareThreads="100"
maxSpareThreads="200"
acceptCount="1000"
maxConnections="1000"
connectionTimeout="30000"
keepAliveTimeout="15000"
maxKeepAliveRequests="1"
tcpNoDelay="true"
redirectPort="8443"
enableLookups="false"
URIEncoding="UTF-8"/>
原因3: https换成http
原因4: 请求信息包含非法字符
请求信息里包含了非法字符,我的参数如下:包含了“[]|”非法字符 无效字符
[http-nio-8080-exec-35] INFO org.apache.coyote.http11.Http11Processor:175 - Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name [2380x00ll|'|'|SGFjS2VkX0Q3NUU2QUFB|'|'|WIN-QZN7FJ7D1O|'|'|Administrator|'|'|18-11-28|'|'||'|'|Win ]. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:419)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
at org.apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787)
at org.apache.tomcat.util.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
解决办法
1、降低Tomcat版本
2、增加Tomcat配置类:可以插入\"#<>[\\]^`{|}中的任意特殊字符,当然也可以自定义
import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((Connector connector) -> {
connector.setProperty("relaxedPathChars", "\"#<>[\\]^`{|}/");
connector.setProperty("relaxedQueryChars", "\"#<>[\\]^`{|}/");
});
return factory;
}
}
本文标签: 报错异常ErrorparsingSpringBoot
版权声明:本文标题:【异常】SpringBoot报错 Error parsing HTTP request header Invalid character found in method name 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728550863a1163416.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论