Make ForwardedHeadersFilter.serverPort nullable

See gh-2658
This commit is contained in:
spencergibb
2025-03-17 19:10:19 -04:00
parent 6ce73c6ec7
commit 8d79a175cb
2 changed files with 8 additions and 5 deletions

View File

@@ -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;
}

View File

@@ -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);