diff --git a/src/main/java/com/eactive/eai/adapter/http/dynamic/filter/ReflectAllHeaderFilter.java b/src/main/java/com/eactive/eai/adapter/http/dynamic/filter/ReflectAllHeaderFilter.java index ca0633e..652f997 100644 --- a/src/main/java/com/eactive/eai/adapter/http/dynamic/filter/ReflectAllHeaderFilter.java +++ b/src/main/java/com/eactive/eai/adapter/http/dynamic/filter/ReflectAllHeaderFilter.java @@ -51,13 +51,6 @@ public class ReflectAllHeaderFilter implements HttpAdapterFilter { @Override public Object doPreFilter(String adptGrpName, String adptName, Object message, Properties prop, HttpServletRequest request, HttpServletResponse response) throws Exception { - return message; - } - - @Override - public Object doPostFilter(String adptGrpName, String adptName, Object resultMessage, Properties prop, - HttpServletRequest request, HttpServletResponse response) throws Exception { - logger.debug("doPreFilter ReflectAllHeaderFilter Start."); String propValue = PropManager.getInstance().getProperty(PROPERTIES_GROUP_NAME, HEADER_KEY_NAMES, "").trim(); @@ -89,6 +82,45 @@ public class ReflectAllHeaderFilter implements HttpAdapterFilter { } logger.debug("doPreFilter ReflectAllHeaderFilter End."); + + return message; + } + + @Override + public Object doPostFilter(String adptGrpName, String adptName, Object resultMessage, Properties prop, + HttpServletRequest request, HttpServletResponse response) throws Exception { + + logger.debug("doPostFilter ReflectAllHeaderFilter Start."); + + String propValue = PropManager.getInstance().getProperty(PROPERTIES_GROUP_NAME, HEADER_KEY_NAMES, "").trim(); + String[] userSettingBlackList = propValue.split(","); + + if( userSettingBlackList.length > 0 ) { + HttpHeaderRelayBlackList = Stream + .concat(Arrays.stream(HttpHeaderRelayBlackList), Arrays.stream(userSettingBlackList)) + .toArray(String[]::new); + } + + try { + Enumeration headerNames = request.getHeaderNames(); + while (headerNames.hasMoreElements()) { + + String headerName = headerNames.nextElement(); + String headerValue = request.getHeader(headerName); + + if( StringUtils.equalsAnyIgnoreCase( headerName, HttpHeaderRelayBlackList ) ) { + logger.debug("Skip Processing Key ["+headerName+"], value ["+headerValue+"] in HttpHeaderRelayBlackList"); + continue; + } + + response.setHeader(headerName, headerValue); + } + + } catch (Exception e) { + logger.error(e.getMessage()); + } + + logger.debug("doPostFilter ReflectAllHeaderFilter End."); return resultMessage; }