测试时,并没有测出该问题,到了生产环境才出现这个问题。

经过排查,主要是由于测试时,都是jdk8 的Base64 统一编码,解码;而生产环境是,不同的Base64编码,jdk8 Base64解码,这就会出现问题!

因为在jdk7中,Base64编码包含换行,而在jdk8中,不包含换行,解码就会出错。

解决办法:

1.使用apache common包中的org.apache.commons.codec.binary.Base64类进行编码和解码;

2.编码和解码使用统一jdk版本;

3.编码之后或解码之前去除换行符;

推荐第一种,简单粗暴。