SOAP调用字符编码时大小写敏感性是否会引发请求异常?
SOAP接口&实体编码大小写问题说明
- 这个大小写限制是XML底层规范的强制要求,不是SOAP协议单独加的规则:SOAP报文本质是XML格式,而XML 1.0规范明确规定所有预定义实体引用是大小写敏感的,对应&符号的合法实体编码只有小写形式
&,&属于标准里不存在的无效实体写法。 - 你测试中遇到的现象是合规解析器的默认表现:当报文里出现
&时,XML解析器会直接判定为语法错误、拒绝解析,服务端自然就会返回400 Bad Request;传入标准小写&时解析正常,请求就能按预期处理。 - 不建议通过配置解析器的方式支持大写
&:- 主流XML解析器(包括Java环境的JAXP、Apache Xerces,.NET环境的System.Xml等)默认严格遵循XML规范,没有直接放开非标准实体兼容的配置项;如果强行修改解析器核心规则绕过实体校验,会大幅提升XXE注入等安全漏洞的风险。
- 如果业务上确实需要兼容这类不规范请求,最稳妥的方案是在服务端加一层前置预处理逻辑:在报文进入XML解析流程前,把所有大小写混写的&实体(比如
&、&Amp;)统一替换为标准小写的&,再交给后续流程处理。
补充说明:你之前查到的SOAP标签大小写敏感,本质也是XML本身的规则——XML所有语法关键字、预定义实体、标签名都严格区分大小写,不存在语法层面的大小写宽松匹配模式。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

