tomcat Note: further occurrences of HTTP header parsing errors will be logged at DEBUG

简介: tomcat Note: further occurrences of HTTP header parsing errors will be logged at DEBUG

Tomcat出现这个异常:


20-May-2020 09:53:35.732 INFO [http-nio-8080-exec-7] org.apache.coyote.http11.Http11Processor.service 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 the HTTP protocol
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:570)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:502)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
    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)


出现这个,顾名思义就是 解析header的时候,出错。

 

其实出现这种情况归根结底原因还是因为接口的问题,不过在不改动代码的情况下,

可以尝试,tomcat的server.xml中配置(添加maxHttpHeaderSize)


    <Connector port="8080" protocol="HTTP/1.1"
         maxHttpHeaderSize="8192" 
                           connectionTimeout="20000"
         maxThreads="150"
         maxSpareThreads="75"
               redirectPort="8443" />


如果加了还是一直出现错误,那么就得看对应的接口了,特别是Get方式的接口,着重看传输的参数是不是包含了


一些特殊符号没有进行URL转移,例如涉及:{ } 这种特殊符号。


这种情形,可以尝试在 tomcat的catalina.properties的最后一行改为:


tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}


如果你改了这个还是照样出错,  那么我建议从咱们的接口入手,虽然其实报这个错误,并不影响接口的使用。


但是如果想避免,可以尝试把这类Get方式的接口,改成Post方式,这样就可以有效避免这些过长的参数以及特殊符号参数,


通过post放入到body里面去传递。


最后,如果你按照上面的方法都进行了排查都没得到解决,这时候再看一眼服务器的tomcat的版本,和你打包时用的tomcat的版本,保持版本一直再试试。

 

相关文章
|
5月前
|
JSON 前端开发 Java
图解HTTP请求Tomcat服务器实现前后端交互-2
图解HTTP请求Tomcat服务器实现前后端交互
56 0
|
5月前
|
前端开发 JavaScript Java
图解HTTP请求Tomcat服务器实现前后端交互-1
图解HTTP请求Tomcat服务器实现前后端交互
103 0
|
2月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
156 1
|
4月前
|
前端开发 Java 应用服务中间件
HTTP&Tomcat&Servlet
HTTP&Tomcat&Servlet
59 0
|
4月前
|
存储 Java 应用服务中间件
HTTP服务器——tomcat的安装和使用
HTTP服务器——tomcat的安装和使用
|
4月前
|
存储 安全 Java
从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
|
4月前
|
监控 应用服务中间件
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
|
5月前
|
应用服务中间件 Android开发
Eclipse中启动tomcat后,无法访问localhost:8080(HTTP Status 404)
Eclipse中启动tomcat后,无法访问localhost:8080(HTTP Status 404)
61 0
|
5月前
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
179 0
|
6月前
|
应用服务中间件 Apache
tomcat http 404
tomcat http 404
104 0