HTTP 400:未声明明文文档的字符编码

HTTP 400: The character encoding of the plain text document was not declared

因为我已经使用 AWS Fargate、AWS codepipeline 和代码构建功能在 UAT 环境中部署了基于 struts 的 Java 应用程序。

我在访问应用程序的 JSP 页面时收到 HTTP 400 错误。 url 就像-

https://uat.xxx.org/xxx-partner/contract/suxxxriodxxxxxPairsAction.do?target=prepareSuxxxriodxxxxxPairs&contractIdSubPeriodId=416|837

在 EC2 实例上作为 ear 部署的生产环境中的相同应用程序运行良好。

使用 AWS docs 我尝试对 HTTP 400 进行故障排除,但没有帮助。 因为请求大小在16k以下。

Fargate 的代码构建使用 Wildfly 18.0 进行部署 而 EC2 使用 JBoss 7.1.1 进行部署。

Aws 与此错误无关。 Wildfly 18.0 无法识别管道运算符。

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

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