最近项目使用Apache Tomcat/5.5.25出现如下错误信息:Invalid chunk ignored,闲暇之余测试了几个(不同版本)应用服务器,这钟想象并不是必然性的出现,具体还是跟相应的Web应用服务器相关了,下面我来描述一下具体现象,以及提供一种解决思路方式,学习参考:
错误警告:
2008-9-27 10:55:26 org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Invalid chunk ignored.
运行相应环境:
Using JRE_HOME: C:\jdk1.5.0
Server version: Apache Tomcat/5.5.25
Server built: Aug 24 2007 05:33:50
Server number: 5.5.25.0
OS Name: Windows XP
OS Version: 5.1
Architecture: x86
JVM Version: 1.5.0-b64
JVM Vendor: Sun Microsystems Inc.
但同样在:Apache Tomcat/5.0.28,Apache Tomcat/5.5.10,webSphere6.0,jboss-4.0.2等web应用服务器上不会出现类似警告提示情况。
原因分析之一:你提交后面(*.jsp?param1=1¶m2=2&¶m3=3)的参数跟随过多的&&符号,
超过两个以上,tomcat5.5及版本以上它可能会不识别你给的参数,认为是你的参数非法无效的有大块的,并且可以忽略掉多余的,只是作为警告警示你有非法字符参数传递,一般来说不会影响你的应用程序程序运行,但是我们建议尽量避免这种多余参数的出现。这就是Apache组织在版本升级时,增加应用功能的校验,一些的非法的参数输入格式会提示警告你,有些原因可能被认为是你传入的参数,在对应的页面没有request.getParameter("param")使用到这个参数,既然你传入了,但你又没使用,所以警告提示你需要去掉多余的参数传递;
原因分析之二:jdk版本不同跟应用服务器配置的相应变化,一起做了参数功能校验设置。
也就是说参数的传递尽量的规范化,不能随意撰写,可能会出现你想不到的异常或者警告等。