关于tomcat的request请求问题? 400 报错
因为近期换电脑,所以在搭环境的时候用了新下载的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,然后再启动,则一切正常。但是一直没有找到根本的原因,所以前来请大神赐教。
提交请求之前你需要把非英文参数encode。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。