在ie浏览器,输入uri:http://localhost:8080/hello2.do?name=梦 出现错误-------
信息: 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 the request target. The valid characters are
> defined in RFC 7230 and RFC 3986 at
> org.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:240)
> at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1049)
> at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
> at
> org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2555)
> at
> org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2544)
> 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)
于是找度娘来帮忙,根据网上各种解决办法:
- 有说在server.xml中增加maxHttpHeaderSize字段的:
<Connector URIEncoding="UTF-8"
port=“8080”
protocol=“org.apache.coyote.http11.Http11NioProtocol”
useBodyEncodingForURI="true"
enableLookups=“false”
connectionTimeout=“20000”
redirectPort=“8443” maxHttpHeaderSize=“你想要的大小”/>
如果调整了maxHttpHeaderSize还是解决不了,这时候需要设置前端页面的数据格式,需要将method 的属性设置为POST
此处对于添加maxHttpHeaderSize字段,没反应,但是如果有 **useBodyEncodingForURI=“true”**或者 **URIEncoding=“UTF-8”**虽然在IE浏览器中对于请求中有中文信息,请求方法是get方法的,还是会出现以上错误,但是在chrome浏览器却能正常运行,先告一段落吧。可能IE有很多不支持吧------
发现不错的相关博文:Java程序员请注意:Tomcat Get请求的巨坑