@@ -65,6 +65,18 @@ final class ProxyConfig {
6565 */
6666 private Set <String > hostsWhitelist = new HashSet <String >();
6767
68+ /**
69+ * A list of request header names (case-insensitive) that the proxy is permitted to forward.
70+ * If non-empty, only headers in this set will be forwarded.
71+ */
72+ private Set <String > requestHeaderWhitelist = new HashSet <String >();
73+
74+ /**
75+ * A list of request header names (case-insensitive) that the proxy must NOT forward.
76+ * Headers in this set will always be removed, even if they appear in the whitelist.
77+ */
78+ private Set <String > requestHeaderBlacklist = new HashSet <String >();
79+
6880 /**
6981 * The servlet context
7082 */
@@ -137,6 +149,14 @@ private void configProxy() {
137149 if (p != null )
138150 this .setHostsWhitelist (p );
139151
152+ p = Utils .parseWhiteList (props .getProperty ("requestHeaderWhitelist" ));
153+ if (p != null )
154+ this .setRequestHeaderWhitelist (Utils .toLowerCaseSet (p ));
155+
156+ p = Utils .parseWhiteList (props .getProperty ("requestHeaderBlacklist" ));
157+ if (p != null )
158+ this .setRequestHeaderBlacklist (Utils .toLowerCaseSet (p ));
159+
140160 // ////////////////////////////////////////
141161 // Read various request type properties
142162 // ////////////////////////////////////////
@@ -436,6 +456,50 @@ public void setHostsWhitelist(Set<String> hostsWhitelist) {
436456 this .hostsWhitelist = hostsWhitelist ;
437457 }
438458
459+ /**
460+ * @return the requestHeaderWhitelist
461+ */
462+ public Set <String > getRequestHeaderWhitelist () {
463+ Properties props = propertiesLoader ();
464+
465+ if (props != null ) {
466+ Set <String > set = Utils .parseWhiteList (props .getProperty ("requestHeaderWhitelist" ));
467+ if (set != null )
468+ this .setRequestHeaderWhitelist (Utils .toLowerCaseSet (set ));
469+ }
470+
471+ return requestHeaderWhitelist ;
472+ }
473+
474+ /**
475+ * @param requestHeaderWhitelist the requestHeaderWhitelist to set
476+ */
477+ public void setRequestHeaderWhitelist (Set <String > requestHeaderWhitelist ) {
478+ this .requestHeaderWhitelist = requestHeaderWhitelist ;
479+ }
480+
481+ /**
482+ * @return the requestHeaderBlacklist
483+ */
484+ public Set <String > getRequestHeaderBlacklist () {
485+ Properties props = propertiesLoader ();
486+
487+ if (props != null ) {
488+ Set <String > set = Utils .parseWhiteList (props .getProperty ("requestHeaderBlacklist" ));
489+ if (set != null )
490+ this .setRequestHeaderBlacklist (Utils .toLowerCaseSet (set ));
491+ }
492+
493+ return requestHeaderBlacklist ;
494+ }
495+
496+ /**
497+ * @param requestHeaderBlacklist the requestHeaderBlacklist to set
498+ */
499+ public void setRequestHeaderBlacklist (Set <String > requestHeaderBlacklist ) {
500+ this .requestHeaderBlacklist = requestHeaderBlacklist ;
501+ }
502+
439503 /**
440504 * @return the context
441505 */
0 commit comments