SpringBoot -分析HTTP请求标头时出错

tv6aics1  于 2023-09-29  发布在  Spring
关注(0)|答案(3)|浏览(208)

我正在运行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)
htzpubme

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

olqngx59

olqngx592#

正如我在this similar question中所回答的,检查您是否不小心使用HTTPS协议而不是HTTP协议进行请求。如果您没有在Tomcat上配置SSL,而您发送HTTPS请求,则会导致此奇怪的消息。

blpfk2vs

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中所述。

相关问题