测试时,并没有测出该问题,到了生产环境才出现这个问题。
经过排查,主要是由于测试时,都是jdk8 的Base64 统一编码,解码;而生产环境是,不同的Base64编码,jdk8 Base64解码,这就会出现问题!
因为在jdk7中,Base64编码包含换行,而在jdk8中,不包含换行,解码就会出错。
解决办法:
1.使用apache common包中的org.apache.commons.codec.binary.Base64类进行编码和解码;
2.编码和解码使用统一jdk版本;
3.编码之后或解码之前去除换行符;
推荐第一种,简单粗暴。