Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML页面的访问请求。
Tomcat服务启动后,控制台报错,信息如下:
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:192) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
问题一:
Tomcat配置中maxHttpHeaderSize默认没有配置,默认值是8*1024,修改Tcomcat目录下service.xml配置文件,内容如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize ="10240" redirectPort="8443" />
问题二:
引起上述问题的原因可能是url中有中文参数,新版本Tomcat对url的格式规范要求提高,所以验证通不过,但是谷歌等一些浏览器会主动给中文转译,所以不存在这个问题,360和ie不会主动转译,
解决方法:规范url,转义中文字符;或者降低Tomcat版本。
问题三:本地Tomcat启动正常并且访问正常的项目放在服务器上Tomcat报以上错误。本地Tomcat低于服务器版本,服务器Tomcat版本过高。
解决办法:降低服务器上tomcat版本,访问正常。