ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level

2021-12-15 19:04:30  阅读:492  来源: 互联网

标签:util HTTP errors java tomcat will coyote apache org


云服务器很久没管过了,今天去看了下云服务器日志,不看不知道,一看吓一跳。

日志里竟然是一排的报错,再翻下此前的日志,每天都报一个错误:

    [http-nio-80-exec-10] 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: Request header is too large
        at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:790)
        at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:454)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:269)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

 

随后我去查了一下,网友的说法大致为以下几种:

1、Tomcat 的 header 缓冲区不够

需要在server.xml(tomcat根目录下的conf目录)中增加  maxHttpHeaderSize,单位为KB

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               maxHttpHeaderSize="8192"/>

 

 2、Url头用的是 https

将 https 改成 http 即可(未实验)

 

3、Url传参时携带了特殊符号

json传输的时候包含了{},这就是原因所在、

因为tomcat7某个版本之后,增加了一个新特性,就是严格按照RFC3986规范进行访问解析

而RFC3986规范定义了Url中,只允许包含: 英文字母(a-zA-Z)  数字(0-9)  -_.~ 4个特殊字符

以及所有保留字符(RFC3986中指定了以下字符为保留字符:!*'();:@&=+$,/?#[])

解决方法其实很简单,可以通过修改 tomca t的 catalina.properties 的最后一行改为

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

允许{}即可

 

标签:util,HTTP,errors,java,tomcat,will,coyote,apache,org
来源: https://www.cnblogs.com/sanrenblog/p/15694556.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有