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

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

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

解决办法:

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

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

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

推荐第一种,简单粗暴。