HTTP400:GET 请求不适用于 Wildfly 18 但适用于 JBoss 7

HTTP400: GET request doesn't work on Wildfly 18 but works on JBoss 7

最近我从 Jboss 7.1.1 升级到 Wildfly 18.0.0。 在 运行 wildfly 上,以下 url 不起作用

http://localhost:8080/xxx-yyy/contract/subPeriodBlockingPairsAction.do?target=prepareSubPeriodBlockPairs&contractIdSubPeriodId=416|837

然而,同样的 url 适用于 JBoss 7.1.1 .

该应用程序基于 struts。目标方法具有以下语法-

 public ActionForward prepareSubPeriodBlockPairs(final ActionMapping mapping, final ActionForm form, final ActionErrors validationErrors,
        final HttpServletRequest request, final HttpServletResponse response)

我尝试放置调试点,在 Wildfly 上调试时从未达到过。

但在 JBoss 上调试时到达。

Wildfly 18.0 无法识别管道运算符。

还有'|'根据 HTTP 的 RFC1738 规范,(管道)字符是不安全的。

因此这里必须使用url encoding来解决这个问题。