存在一个接收xml内容的接口,但是入参要求xml内容经过base64转码后才可以正常访问。通过前端代码对xml内容进行base64转码后请求接口,没有问题。但是在后端通过postman调试的时候,手动修改xml内容,由于入参需要base64转码,所以就使用了在线转码的网站进行转码。万万没想到在这里踩坑了,在网上随便使用了一个搜索到的在线转码网站(站长工具——不要用这个!!), 结果转码后的xml入参,直接导致接口报错:
org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有引用。
at org.dom4j.io.SAXReader.read(SAXReader.java:462)
at org.dom4j.io.SAXReader.read(SAXReader.java:325)经过一番排查发现:
相同的xml内容,在 站长工具base64转码后的内容与其他网站在线base64转码后的内容不一致!!!
探究其原因,发现站长工具在进行base64加解密时, 对 “<” 符号自动进行了转义(不确定是否还有其他符号也做过这种操作), 按照“<”进行base64加解密,从而导致与其他网站base64加解密后的结果不同。使用其他网站base64转码后,该问题解决。
使用网上的在线工具要谨慎吖!!
不同网站的base64加密:
站长工具:

在线工具(https://tool.oschina.net/encrypt?type=3):

在线工具对站长工具生成的base64解密:

版权声明:本文为jian876601394原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。