Spring Boot应用接收POST的HTML字符串时括号丢失如何解决
问题原因及解决方案
根本原因
你遇到的右括号丢失问题,核心是请求传输或服务端解析阶段的特殊字符处理异常,常见触发场景如下:
- 如果前端使用
application/x-www-form-urlencoded格式提交请求:右括号)属于表单编码规则下的特殊字符,未做URL编码直接提交时,服务端(Tomcat/Spring内置的请求解析器)会将)识别为参数分隔标识,直接截断后续内容,导致onClick属性仅保留到左括号(。 - 如果前端使用
application/json格式提交:HTML字符串中的双引号未做正确的JSON转义,会导致JSON解析器提前截断content字段内容,丢失后续的右括号、闭合引号等字符。 - 项目配置了XSS防护、HTML内容清理组件(如Jsoup、AntiSamy):默认的安全规则会限制事件属性(如
onClick)中的函数调用格式,自动清理或截断括号后的内容。
解决方案
你可以按照以下优先级排查修复:
- 调整前端提交格式为
application/json,提交前确保HTML字符串中的所有双引号、反斜杠都做了标准JSON转义,避免JSON解析异常截断字段。 - 若必须使用表单格式提交,前端先用
encodeURIComponent()方法对完整HTML字符串做URL编码,服务端接收后再做对应解码,避免特殊字符被解析器误识别为分隔符。 - 检查项目中的过滤器、拦截器配置,如果引入了HTML安全清理组件,调整规则放行
onClick等事件属性的合法函数调用格式,禁止自动截断括号内容。 - 临时验证可在服务端接口入口打印原生ServletRequest的输入流内容,确认丢失场景:如果原生流中就没有右括号,问题出在前端提交/传输阶段;如果原生流内容完整,问题出在服务端反序列化、过滤器处理阶段,可针对性缩小排查范围。
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

