Skip to content

Commit 6ce73c6

Browse files
committed
Changes property to spring.cloud.gateway.forwarded.by.enabled
Defaults to false. See gh-2658
1 parent 5911816 commit 6ce73c6

File tree

5 files changed

+22
-16
lines changed

5 files changed

+22
-16
lines changed

docs/modules/ROOT/pages/spring-cloud-gateway-server-webflux/httpheadersfilters.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
== Forwarded Headers Filter
88
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.
99

10+
The `Forwarded by` header part can be enabled by setting the following property to true (defaults to false):
11+
12+
- `spring.cloud.gateway.forwarded.by.enabled=true`
13+
1014
[[removehopbyhop-headers-filter]]
1115
== RemoveHopByHop Headers Filter
1216
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].

spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,11 @@ public SecureHeadersProperties secureHeadersProperties() {
317317

318318
@Bean
319319
@ConditionalOnProperty(name = "spring.cloud.gateway.forwarded.enabled", matchIfMissing = true)
320-
public ForwardedHeadersFilter forwardedHeadersFilter() {
321-
return new ForwardedHeadersFilter();
320+
public ForwardedHeadersFilter forwardedHeadersFilter(Environment env) {
321+
boolean forwardedByEnabled = env.getProperty("spring.cloud.gateway.forwarded.by.enabled", Boolean.class, false);
322+
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
323+
forwardedHeadersFilter.setForwardedByEnabled(forwardedByEnabled);
324+
return forwardedHeadersFilter;
322325
}
323326

324327
// HttpHeaderFilter beans

spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/ForwardedHeadersFilter.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.apache.commons.logging.LogFactory;
3131

3232
import org.springframework.beans.factory.annotation.Value;
33-
import org.springframework.boot.context.properties.ConfigurationProperties;
3433
import org.springframework.core.Ordered;
3534
import org.springframework.http.HttpHeaders;
3635
import org.springframework.http.server.reactive.ServerHttpRequest;
@@ -44,16 +43,14 @@
4443
* @author Olga Maciaszek-Sharma
4544
* @author Tillmann Heigel
4645
*/
47-
@ConfigurationProperties("spring.cloud.gateway.forwarded")
4846
public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
4947

5048
@Value("${server.port}")
5149
private int serverPort;
5250

5351
private final Log logger = LogFactory.getLog(getClass());
5452

55-
/** If Forwarded: by header is enabled. */
56-
private boolean byEnabled = true;
53+
private boolean forwardedByEnabled = false;
5754

5855
/**
5956
* Forwarded header.
@@ -103,12 +100,8 @@ static Forwarded parse(String value) {
103100
return result;
104101
}
105102

106-
public boolean isByEnabled() {
107-
return byEnabled;
108-
}
109-
110-
public void setByEnabled(boolean byEnabled) {
111-
this.byEnabled = byEnabled;
103+
public void setForwardedByEnabled(boolean forwardedByEnabled) {
104+
this.forwardedByEnabled = forwardedByEnabled;
112105
}
113106

114107
@Override
@@ -162,7 +155,7 @@ public HttpHeaders filter(HttpHeaders input, ServerWebExchange exchange) {
162155
forwarded.put("for", forValue);
163156
}
164157

165-
if (byEnabled) {
158+
if (forwardedByEnabled) {
166159
addForwardedByHeader(forwarded);
167160
}
168161

spring-cloud-gateway-server/src/main/resources/META-INF/additional-spring-configuration-metadata.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,12 @@
389389
"description": "Enables the ForwardedHeadersFilter.",
390390
"defaultValue": "true"
391391
},
392+
{
393+
"name": "spring.cloud.gateway.forwarded.by.enabled",
394+
"type": "java.lang.Boolean",
395+
"description": "Enables the Forwarded: by header part.",
396+
"defaultValue": "false"
397+
},
392398
{
393399
"name": "spring.cloud.gateway.httpserver.wiretap",
394400
"type": "java.lang.Boolean",

spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/headers/ForwardedHeadersFilterTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public void forwardedByForIpv4AddressIsAdded() throws UnknownHostException {
207207
Forwarded forwarded = new Forwarded();
208208
InetAddress ipv4Address = InetAddress.getByName("216.103.69.111");
209209
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
210-
forwardedHeadersFilter.setByEnabled(true);
210+
forwardedHeadersFilter.setForwardedByEnabled(true);
211211

212212
forwardedHeadersFilter.addForwardedBy(forwarded, ipv4Address);
213213

@@ -220,7 +220,7 @@ public void forwardedByForIpv6AddressIsAdded() throws UnknownHostException {
220220
Forwarded forwarded = new Forwarded();
221221
InetAddress ipv6Address = InetAddress.getByName("abc4:babf:955f:1724:11bc:0153:275c:d36e");
222222
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
223-
forwardedHeadersFilter.setByEnabled(true);
223+
forwardedHeadersFilter.setForwardedByEnabled(true);
224224

225225
forwardedHeadersFilter.addForwardedBy(forwarded, ipv6Address);
226226

@@ -234,7 +234,7 @@ public void forwardedByIsNotAddedIfFeatureIsDisabled() throws UnknownHostExcepti
234234
Forwarded forwarded = new Forwarded();
235235
InetAddress ipv4Address = InetAddress.getByName("216.103.69.111");
236236
ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter();
237-
forwardedHeadersFilter.setByEnabled(false);
237+
forwardedHeadersFilter.setForwardedByEnabled(false);
238238

239239
forwardedHeadersFilter.addForwardedBy(forwarded, ipv4Address);
240240

0 commit comments

Comments
 (0)