Changes property to spring.cloud.gateway.forwarded.by.enabled

Defaults to false.

See gh-2658
This commit is contained in:
spencergibb
2025-03-17 16:59:19 -04:00
parent 5911816f0d
commit 6ce73c6ec7
5 changed files with 22 additions and 16 deletions

View File

@@ -7,6 +7,10 @@
== Forwarded Headers Filter
The `Forwarded` Headers Filter creates a `Forwarded` header to send to the downstream service. It adds the `Host` header, scheme and port of the current request to any existing `Forwarded` header.
The `Forwarded by` header part can be enabled by setting the following property to true (defaults to false):
- `spring.cloud.gateway.forwarded.by.enabled=true`
[[removehopbyhop-headers-filter]]
== RemoveHopByHop Headers Filter
The `RemoveHopByHop` Headers Filter removes headers from forwarded requests. The default list of headers that is removed comes from the https://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-14#section-7.1.3[IETF].

View File

@@ -317,8 +317,11 @@ public class GatewayAutoConfiguration {
@Bean
@ConditionalOnProperty(name = "spring.cloud.gateway.forwarded.enabled", matchIfMissing = true)
public ForwardedHeadersFilter forwardedHeadersFilter() {
return new ForwardedHeadersFilter();
public ForwardedHeadersFilter forwardedHeadersFilter(Environment env) {
boolean forwardedByEnabled = env.getProperty("spring.cloud.gateway.forwarded.by.enabled", Boolean.class, false);
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
forwardedHeadersFilter.setForwardedByEnabled(forwardedByEnabled);
return forwardedHeadersFilter;
}
// HttpHeaderFilter beans

View File

@@ -30,7 +30,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.Ordered;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
@@ -44,7 +43,6 @@ import org.springframework.web.server.ServerWebExchange;
* @author Olga Maciaszek-Sharma
* @author Tillmann Heigel
*/
@ConfigurationProperties("spring.cloud.gateway.forwarded")
public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
@Value("${server.port}")
@@ -52,8 +50,7 @@ public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
private final Log logger = LogFactory.getLog(getClass());
/** If Forwarded: by header is enabled. */
private boolean byEnabled = true;
private boolean forwardedByEnabled = false;
/**
* Forwarded header.
@@ -103,12 +100,8 @@ public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
return result;
}
public boolean isByEnabled() {
return byEnabled;
}
public void setByEnabled(boolean byEnabled) {
this.byEnabled = byEnabled;
public void setForwardedByEnabled(boolean forwardedByEnabled) {
this.forwardedByEnabled = forwardedByEnabled;
}
@Override
@@ -162,7 +155,7 @@ public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
forwarded.put("for", forValue);
}
if (byEnabled) {
if (forwardedByEnabled) {
addForwardedByHeader(forwarded);
}

View File

@@ -389,6 +389,12 @@
"description": "Enables the ForwardedHeadersFilter.",
"defaultValue": "true"
},
{
"name": "spring.cloud.gateway.forwarded.by.enabled",
"type": "java.lang.Boolean",
"description": "Enables the Forwarded: by header part.",
"defaultValue": "false"
},
{
"name": "spring.cloud.gateway.httpserver.wiretap",
"type": "java.lang.Boolean",

View File

@@ -207,7 +207,7 @@ public class ForwardedHeadersFilterTests {
Forwarded forwarded = new Forwarded();
InetAddress ipv4Address = InetAddress.getByName("216.103.69.111");
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
forwardedHeadersFilter.setByEnabled(true);
forwardedHeadersFilter.setForwardedByEnabled(true);
forwardedHeadersFilter.addForwardedBy(forwarded, ipv4Address);
@@ -220,7 +220,7 @@ public class ForwardedHeadersFilterTests {
Forwarded forwarded = new Forwarded();
InetAddress ipv6Address = InetAddress.getByName("abc4:babf:955f:1724:11bc:0153:275c:d36e");
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
forwardedHeadersFilter.setByEnabled(true);
forwardedHeadersFilter.setForwardedByEnabled(true);
forwardedHeadersFilter.addForwardedBy(forwarded, ipv6Address);
@@ -234,7 +234,7 @@ public class ForwardedHeadersFilterTests {
Forwarded forwarded = new Forwarded();
InetAddress ipv4Address = InetAddress.getByName("216.103.69.111");
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
forwardedHeadersFilter.setByEnabled(false);
forwardedHeadersFilter.setForwardedByEnabled(false);
forwardedHeadersFilter.addForwardedBy(forwarded, ipv4Address);