- 问题: 我们遇到的问题是,使用XssFilter对请求参数过滤之后,接口无法再接受到请求参数。
- 原因:在工程中定义了处理请求的MessageConverter。而定义的Converter对编码有要求。
- 本质:(以下为个人理解)
spring在处理消息时,先循环内部的messageConverter,找出可用的并且可读的。然后根据对应的解析类去解析对应的输入流。我们使用fastJsonMessageConverter解析,默认解码使用的是utf8编码。然后XssFilter最后一步在通过字符串获取字节数组时没有指定编码,默认成了gbk,导致解码失败,无法获取到参数。
补充:
在XssFilter 获取字符串,解码的时候,指定字符集为UTF8。