|
@@ -7,7 +7,9 @@ import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
|
|
import org.springframework.cloud.gateway.filter.GlobalFilter;
|
|
|
import org.springframework.core.Ordered;
|
|
|
import org.springframework.core.io.buffer.DataBuffer;
|
|
|
+import org.springframework.core.io.buffer.DataBufferFactory;
|
|
|
import org.springframework.core.io.buffer.DataBufferUtils;
|
|
|
+import org.springframework.core.io.buffer.DefaultDataBufferFactory;
|
|
|
import org.springframework.core.io.buffer.NettyDataBufferFactory;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.HttpMethod;
|
|
@@ -70,10 +72,12 @@ public class XssFilter implements GlobalFilter, Ordered
|
|
|
public Flux<DataBuffer> getBody()
|
|
|
{
|
|
|
Flux<DataBuffer> body = super.getBody();
|
|
|
- return body.map(dataBuffer -> {
|
|
|
- byte[] content = new byte[dataBuffer.readableByteCount()];
|
|
|
- dataBuffer.read(content);
|
|
|
- DataBufferUtils.release(dataBuffer);
|
|
|
+ return body.buffer().map(dataBuffers -> {
|
|
|
+ DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
|
|
|
+ DataBuffer join = dataBufferFactory.join(dataBuffers);
|
|
|
+ byte[] content = new byte[join.readableByteCount()];
|
|
|
+ join.read(content);
|
|
|
+ DataBufferUtils.release(join);
|
|
|
String bodyStr = new String(content, StandardCharsets.UTF_8);
|
|
|
// 防xss攻击过滤
|
|
|
bodyStr = EscapeUtil.clean(bodyStr);
|