场景:
项目a进行了spring boot版本升级, 使用了2.7.15
项目b是做接口转发 (没升级spring boot版本, 用的是2.1.5)
调用过程: 请求方>>项目b>>项目a
现象:
postman直接调用a中的接口, 接口报错, msg里的错误信息是正常显示
当调用接口报错时, msg里的错误信息是乱码
原因:
springboot框架升级后, http的响应头Content-Type的值规范, 由原来的"application/json;charset=UTF-8", 变成了"application/json"
因为没有指定编码格式为utf-8, 项目b在处理接口400错误时,
根据源码可知
默认使用的是"iso8859-1", 因此出现了乱码
解决方案:
1.框架统一升级
2.在项目a中对, 对response head手动设置"Content-Type"的值为"application/json;charset=UTF-8"
如:
ResponseEntity.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8.toString()).body(xxxxResult);
或者
修改配置文件, 使用自定义过滤器等