“ 俗话说:为了修复一个小bug而引入了一个更大bug ”因所负责的系统使用的spring框架版本5.1.5.RELEASE在线上出过一个偶发的小事故,最后定位为spring-context中的一个bug导致的。
M : 通用过滤器,解析url中的参数至parameterMap中,并初始化读取了body中的inputstream进行了byte数组的缓存,用于解决重复读取流问题 A: 特定处理器,先是查询parameter中的参数,然后逻辑处理后再设置一些特殊参数。2.为何需要改过滤器顺序
postman : POST /shop/bpaas/floor?client&clientVersion&ip=111.202.149.19&gfid=getShopMainFloor&body= 前端 : POST /shop/bpaas/floor HTTP/1.0" 200 634 "-" "api" "0.94" 0.008 0.007 client&clientVersion&ip=111.202.149.17&gfid=getShopMainFloor&body=经过以上对比发现虽然postman使用了post请求,但数据还是放置在url中,在经过系统的一个内置过滤器M时将url中的参数解析到了parameterMap中,后续过滤器可以使用
“ Disable auto-configuration of HiddenHttpMethodFilter by default ” github上对应的版本release notes: https://github.com/spring-projects/spring-boot/releases/tag/v2.2.0.M5也就是说升级后HiddenHttpMethodFilter默认配置由enable修改为了disable,如果再修改回去是不是可以修复参数解析的问题呢?
-Dspring.mvc.hiddenmethod.filter.enabled=true添加后可以正常使用,证明是此过滤器中在某种条件下不可缺少。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |