diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java index 622af6c7..5d399d95 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java @@ -317,10 +317,11 @@ public class GatewayAutoConfiguration { @Bean @ConditionalOnProperty(name = "spring.cloud.gateway.forwarded.enabled", matchIfMissing = true) - public ForwardedHeadersFilter forwardedHeadersFilter(Environment env) { + public ForwardedHeadersFilter forwardedHeadersFilter(Environment env, ServerProperties serverProperties) { boolean forwardedByEnabled = env.getProperty("spring.cloud.gateway.forwarded.by.enabled", Boolean.class, false); ForwardedHeadersFilter forwardedHeadersFilter = new ForwardedHeadersFilter(); forwardedHeadersFilter.setForwardedByEnabled(forwardedByEnabled); + forwardedHeadersFilter.setServerPort(serverProperties.getPort()); return forwardedHeadersFilter; } diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/ForwardedHeadersFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/ForwardedHeadersFilter.java index 39336326..e55871f3 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/ForwardedHeadersFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/headers/ForwardedHeadersFilter.java @@ -29,7 +29,6 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.beans.factory.annotation.Value; import org.springframework.core.Ordered; import org.springframework.http.HttpHeaders; import org.springframework.http.server.reactive.ServerHttpRequest; @@ -45,8 +44,7 @@ import org.springframework.web.server.ServerWebExchange; */ public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered { - @Value("${server.port}") - private int serverPort; + private Integer serverPort; private final Log logger = LogFactory.getLog(getClass()); @@ -104,6 +102,10 @@ public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered { this.forwardedByEnabled = forwardedByEnabled; } + public void setServerPort(Integer serverPort) { + this.serverPort = serverPort; + } + @Override public int getOrder() { return 0; @@ -179,7 +181,7 @@ public class ForwardedHeadersFilter implements HttpHeadersFilter, Ordered { if (localAddress instanceof Inet6Address) { byValue = "[" + byValue + "]"; } - if (serverPort > 0) { + if (serverPort != null && serverPort > 0) { byValue = byValue + ":" + serverPort; } forwarded.put("by", byValue);