原创

解决Error reading XMLStreamReader: Unexpected character '&' (code 38) in prolog报错

请求webservice接口报错:
<soap:Text xml:lang="en">Error reading XMLStreamReader: Unexpected character '&' (code 38) in prolog; expected '<' at [row,col {unknown-source}]: [7,1]</soap:Text>


问题描述:
测试webservice接口的时候,使用用soapUI或者postman调用时,出现上面的错误
查询资料很多人都说是格式问题,或者是把尖括号替换成&it;>,折腾半天也不是格式问题,尖括号转义后也一样报错。

把前面删除了,就报错后面的文本值,将所有标签中的文本值删除后报错:
Error reading XMLStreamReader: Unexpected EOF in prolog

解决:
后来发现是因为后端过滤器filter增加了xss防注入,导致请求webservice接口的xml格式被屏蔽了。
xss防注入代码:
XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request,
"是否过滤富文本","sql特殊字符过滤参数","xss特殊字符过滤参数");
filterChain.doFilter(xssRequest, response);

后面增加过滤条件,指定webservice的接口跳过xss防注入,即可解决问题。

本文链接地址:http://www.ysxbohui.com/article/265

正文到此结束