我正在运行SpringBoot Application
,刚刚检查了服务器日志,得到了几个这样的错误。我不明白是什么原因导致的,因为错误每天都会在12/24小时后出现。
在8.5.11
上运行的Tomcat版本
2018-03-04 17:03:26 [http-nio-8080-exec-85] INFO o.a.coyote.http11.Http11Processor - Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:421)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:667)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
3条答案
按热度按时间htzpubme1#
这可能是因为解析HTTPS标头而不是HTTP。试试看:
1.添加:
logging.level.org.springframework.web: trace
logging.level.org.apache: trace
到你的application.properties,看看Spring对你说了什么。
1.检查当时是否有任何计划活动引用SSL加密的其他资源。标签:java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
olqngx592#
正如我在this similar question中所回答的,检查您是否不小心使用HTTPS协议而不是HTTP协议进行请求。如果您没有在Tomcat上配置SSL,而您发送HTTPS请求,则会导致此奇怪的消息。
blpfk2vs3#
我在Sping Boot 2(2.0.1.RELEASE)应用程序中遇到了这个错误,该应用程序被配置为在端口8443上提供HTTPS服务,并将端口8080 HTTP流量重定向到端口8443。
在微软Edge上,应用程序按预期工作,
http://localhost:8080
重定向到https://localhost:8443
。然而在Chrome 66上,这只会工作一次,然后Chrome会抱怨“localhost发送了无效的响应”(ERR_SSL_PROTOCOL_ERROR
)。服务器日志显示:
DEBUG 11440 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer: Received [ <<unprintable characters>> ] INFO 11440 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor: Error parsing HTTP request header
事实证明,Chrome将
localhost
添加到其HSTS list中,因为Sping Boot 为https://localhost:8443发回了一个Strict-Transport-Security: max-age=31536000 ; includeSubDomains
头。因此,本质上,这个问题的发生是因为客户端(即浏览器)试图向HTTP端点发送HTTPS。在
<? extends WebSecurityConfigurerAdapter>.configure
中添加.headers().httpStrictTransportSecurity().disable();
解决了这个问题,如this StackOverflow question中所述。