Filter过滤器导致CSS样式失效

问题出现

某次在导入一个JavaWeb项目运行时发现其自带的CSS外链样式全部失效,导致页面变得十分难看。

问题排查

查看浏览器的Console信息,Chrome的开发者工具没有提示任何错误。换用Edge的开发者工具,发现Console提示这样一条警告:
在这里插入图片描述

于是检查CSS外链样式的声明处,发现已经指定MIME类型为css了

在这里插入图片描述

这就意味着资源在传输过程中被人修改了MIME 类型的声明,于是去检查项目中的过滤器发现有一个用于处理所有请求CharchaterFilter,这个过滤器本身是用于解决乱码问题的,因此其中有一条用于解决响应乱码的语句:
在这里插入图片描述

问题找到了!这行代码把所有响应的所有的MIME类型都设置为HTML了。将其注释,测试,发现页面的CSS样式终于生效了!看来问题就出现在这行代码。

问题解决

既然发现了问题所在,解决起来就简单了,将原来的request.setContentType改成response.setCharacterEncoding(“utf-8”)即可:

在这里插入图片描述

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页