2015年5月7日星期四

EAP_021:URL中的"/"和"\"导致400 错误

环境:JBoss EAP 6.x

测试中发现 web url 中包含 / (%2F) 或 / (%5C)会导致 400 error。
比如:
(1)https://e.m3.lab/ocfs/cashappoint/cashaptOne.do%5C?lgFlg=1&type=
(2)https://e.m3.lab/ocfs/home%2Fpage.do 

解决方法:

修改standalone.conf文件,
在 JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true” 这一行后增加以下两行:
 JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
 JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true”

完整的JAVA_OPS设置如下:
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.policy-permissions=true"
   JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
   JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true"

参考文献:
1. http://stackoverflow.com/questions/4069002/receive-an-http-400-error-if-2f-is-part-of-the-get-url-in-jboss
2. https://rhn.redhat.com/errata/RHSA-2007-0360.html

没有评论: