Spring 5.1.10 RELEASE UrlPathHelper偶发NPE问题修复情况问询
Spring 5.1.10.RELEASE UrlPathHelper空指针问题解答
根因确认
你排查的方向正确,该空指针确实由uri参数为null触发:
在异步请求、特殊请求转发/包含场景下,HttpServletRequest.getRequestURI()存在返回null的可能,Spring 5.1.10.RELEASE版本的UrlPathHelper.getRequestUri方法未对获取到的uri做非空校验,直接传入后续处理逻辑,最终在removeSemicolonContentInternal方法执行时抛出空指针。
官方修复状态
该问题为Spring官方已知Bug,已完成修复:
- 5.1.x维护分支:5.1.11.RELEASE及更高版本已合入修复代码
- 5.2.x及以上正式版本:均包含该问题的修复逻辑
修复方案为在uri处理链路前置增加非空校验,uri为null时做兼容处理,不会再抛出空指针。
解决方案
- 首选方案:将Spring Framework版本升级至5.1.11.RELEASE及以上稳定版,同小版本分支升级几乎无兼容性风险,可直接解决该问题。
- 临时规避方案:若暂时无法升级,可自定义类继承
UrlPathHelper,重写getRequestUri方法,在返回前增加非空判断,当uri为null时返回空字符串或"/",再将自定义的UrlPathHelper配置到Spring MVC中替换默认实现即可。
内容的提问来源于stack exchange,提问作者Gaurav Rawat
相关产品推荐
相关产品推荐

