关于tomcat的request请求问题

wo545 发布于 2017/04/20 10:38
阅读 225
收藏 0

因为近期换电脑,所以在搭环境的时候用了新下载的apache-tomcat-7.0.77和apache-tomcat-6.0.53,项目使用的是struts1,spring。在配好环境启动服务的时候一切都是正常的,前台到后台的响应也是正常,但是在请求action的url中加入中文,就会出现错误。

项目中提交用的是直接提交form表单的方式,method=post。action如下

dataForm.action=contextPath+"/addextaxstatemanage/stateChange.do?operate=deduction&tes=你好";

参数tes如果不办含中文的话正常响应,但是如果假如中文,则报错,而且都没有进入action方法。我debug过了,因为没有进入action,所以我也不知道是什么原因,tomcat7.0.77版本会报如下的错误,但是6.0.53则不会报错

2017-4-20 9:56:54 org.apache.coyote.http11.AbstractHttp11Processor process
信息: 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.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189)
    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:316)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:662)

最后拷贝了原来电脑上的apache-tomcat-6.0.35,然后再启动,则一切正常。但是一直没有找到根本的原因,所以前来请大神赐教。

加载中
0
ChangeZ
ChangeZ

提交请求之前你需要把非英文参数encode。

返回顶部
顶部