From d98a0e5159e3fc17c9ec7a2b88bbfa40ef136cc0 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Tue, 19 Mar 2019 11:31:44 -0400 Subject: [PATCH] Enable request buffering when request body tracing Request body tracing reads the body then it will be read again later for actual handling. Therefore, request buffering is required when request body tracing. Fixes https://github.com/spring-cloud/spring-cloud-netflix/issues/3418 --- .../netflix/zuul/filters/pre/Servlet30WrapperFilter.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spring-cloud-netflix-zuul/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/Servlet30WrapperFilter.java b/spring-cloud-netflix-zuul/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/Servlet30WrapperFilter.java index b7516415b9..0c376d2093 100644 --- a/spring-cloud-netflix-zuul/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/Servlet30WrapperFilter.java +++ b/spring-cloud-netflix-zuul/src/main/java/org/springframework/cloud/netflix/zuul/filters/pre/Servlet30WrapperFilter.java @@ -20,6 +20,8 @@ import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.netflix.zuul.filters.ZuulProperties; import org.springframework.cloud.netflix.zuul.util.RequestUtils; import org.springframework.util.Assert; import org.springframework.util.ReflectionUtils; @@ -38,6 +40,8 @@ */ public class Servlet30WrapperFilter extends ZuulFilter { + @Autowired + private ZuulProperties zuulProperties; private Field requestField = null; public Servlet30WrapperFilter() { @@ -80,6 +84,10 @@ else if (RequestUtils.isDispatcherServletRequest()) { // If it's going through the dispatcher we need to buffer the body ctx.setRequest(new Servlet30RequestWrapper(request)); } + else if (zuulProperties.isTraceRequestBody()) { + // If requesty body tracing we need to buffer the body + ctx.setRequest(new Servlet30RequestWrapper(request)); + } return null; }