环境
JDK1.8
SpringBoot2.4.5
Shiro1.11.0
问题描述
前端使用rest方式请求静态资源文件,静态资源文件中存在中文的文件无法访问,提示400错误。
尝试方法
1、配置SpringBoot关闭自动URL解码:无效
2、自定义Controller,手动读取文件:失败,400错误 在Controller前抛出
找到问题
查资料发现是Shiro的问题,参考文档
考虑过降级Shiro版本,看了没有安全漏洞的几个版本,InvalidRequestFilter都是有这个问题的,只有按照参考文档来修改
Map<String, Filter> filterMap = new LinkedHashMap<>();
//设置我们自定义的JWT过滤器
filterMap.put("invalid", new CNInvalidRequestFilter());
List<String> globalFilters = new ArrayList<>();
globalFilters.add("invalid");
factoryBean.setFilters(filterMap);
factoryBean.setGlobalFilters(globalFilters);