问题
Java中设置响应头时,如果设置的是请求参数,则会造成非法请求参数修改响应头,从而拆分出多个响应。问题代码如下:
response.addHeader("Content-Length", "" + data.length);
解决
只需要在设置响应头数据时,对数据进行过滤即可:
response.addHeader("Content-Length", Encode.forJava("" + data.length));
这里使用的是owasp-java-encoder库进行处理的,需要引入相关依赖:
<dependency>
<groupId>org.owasp.encoder</groupId>
<artifactId>encoder</artifactId>
<version>1.2.3</version>
</dependency>