问题描述
因为我已经使用 AWS Fargate、AWS 代码管道和代码构建功能在 UAT 环境上部署了基于 struts 的 Java 应用程序。
我在访问我的应用程序的 JSP 页面时遇到 HTTP 400 错误。网址就像-
https://uat.xxx.org/xxx-partner/contract/suxxxriodxxxxxPairsAction.do?target=prepareSuxxxriodxxxxxPairs&contractIdSubPeriodId=416|837
同样的应用程序在生产环境中部署为 EC2 实例上的耳朵,工作正常。
使用 AWS docs 我尝试对 HTTP 400 进行故障排除,但没有帮助。 因为请求大小低于16k。
Fargate 的代码构建使用 Wildfly 18.0 进行部署 而 EC2 使用 JBoss 7.1.1 进行部署。
解决方法
aws 与此错误无关。 Wildfly 18.0 无法识别管道运算符。
还有'|'根据 HTTP 的 RFC1738 规范,(管道)字符是不安全的。
因此此处必须使用 url encoding 来解决该问题。