开发者社区> 问答> 正文

关于tomcat的request请求问题? 400 报错

关于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,然后再启动,则一切正常。但是一直没有找到根本的原因,所以前来请大神赐教。

展开
收起
爱吃鱼的程序员 2020-06-05 12:32:35 588 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

    2020-06-05 12:32:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载