添加CORS Filter至web.xml后出现实体引用错误,求排查原因
解决XML解析错误:「The entity name must immediately follow the '&' in the entity reference」
问题根源
这个错误是XML解析器处理web.xml时,遇到未转义的&字符导致的。XML规范要求&必须转义为&,否则解析器会将其当作实体引用的起始符,若后续没有合法的实体名称(如<、>),就会触发该报错。
排查与修复方案
结合你提供的CORS Filter配置,重点检查以下场景:
- 多源配置错误:如果
cors.allowed.origins配置了多个允许的源,错误地用&分隔(而非逗号),比如:
解决方式:<param-value>http://localhost:3000&http://localhost:8080</param-value>- 推荐用逗号分隔多个源(Tomcat的CorsFilter原生支持逗号分隔):
<param-value>http://localhost:3000,http://localhost:8080</param-value> - 若必须使用
&,则转义为&:<param-value>http://localhost:3000&http://localhost:8080</param-value>
- 推荐用逗号分隔多个源(Tomcat的CorsFilter原生支持逗号分隔):
- 其他参数中的未转义
&:检查cors.exposed.headers或其他初始化参数值,确保所有&都已替换为&。
验证配置合法性
你粘贴的代码片段本身是合法的,但要注意:XML文件中直接写<、>标签即可,不需要手动转义为<、>(你粘贴的代码是HTML转义后的格式,实际web.xml中不需要这么写)。
内容的提问来源于stack exchange,提问作者KevinM
相关产品推荐
相关产品推荐

