spring升级后配置mediaTypes和defaultContentType的注意细节

背景:

因为spring官方发布了spring framework的更新,此次更新修复了一个RFD(反射型文件下载)安全漏洞,,漏洞编号为CVE-2020-5421。该漏洞可以通过一个jsessionId路径参数绕过 RFD(反射型文件下载) 保护。

项目原本使用:spring-3.2.4.RELEASE

需要升级版本至:spring-4.3.29.RELEASE

 

问题:

升级完spring会发现在配置文件里面, ContentNegotiatingViewResolver这个视图解析器的配置无法解析mediaTypes和defaultContentType,附图:

spring升级后配置mediaTypes和defaultContentType的注意细节

原因:spring 4版本中的springmvc配置,会报mediaTypes和defaultContentType为非法配置,现在可以在原来的 ContentNegotiatingViewResolver 中加入 contentNegotiationManager,然后在contentNegotiationManager配置defaultContentType,如下:

spring升级后配置mediaTypes和defaultContentType的注意细节

这样子来配置,就可以解决了!

附(版本差异):

spring3:

org.springframework.web.servlet.view.json.MappingJacksonJsonView
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

spring4:

org.springframework.web.servlet.view.json.MappingJackson2JsonView
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter