From 626f20e77271f943073062a58357d692a20b2617 Mon Sep 17 00:00:00 2001
From: Hyeon Sung
Date: Wed, 22 Jan 2025 21:42:14 +0900
Subject: [PATCH 1/3] Refactor header appending logic for better readability
This PR refactors the logic for adding headers in the appendXForwarded and appendForwarded methods.
Signed-off-by: Hyeon Sung
---
.../cloud/gateway/mvc/ProxyExchange.java | 35 +++++++++----------
1 file changed, 16 insertions(+), 19 deletions(-)
diff --git a/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java b/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
index 11eb688c7e..9b0ada192f 100644
--- a/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
+++ b/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
@@ -403,30 +403,27 @@ private void proxy() {
private void appendXForwarded(URI uri) {
// Append the legacy headers if they were already added upstream
- String host = headers.getFirst("x-forwarded-host");
- if (host == null) {
- return;
+ appendXForwardedHeader("x-forwarded-host", () -> uri.getHost());
+ appendXForwardedHeader("x-forwarded-proto", () -> uri.getScheme());
+ }
+
+ private void appendXForwardedHeader(String headerName, Supplier uriValue) {
+ String existingValue = headers.getFirst(headerName);
+ if (existingValue != null) {
+ StringBuilder builder = new StringBuilder(existingValue);
+ builder.append(",").append(uriValue.get());
+ headers.set(headerName, builder.toString());
}
- host = host + "," + uri.getHost();
- headers.set("x-forwarded-host", host);
- String proto = headers.getFirst("x-forwarded-proto");
- if (proto == null) {
- return;
- }
- proto = proto + "," + uri.getScheme();
- headers.set("x-forwarded-proto", proto);
}
private void appendForwarded(URI uri) {
- String forwarded = headers.getFirst("forwarded");
- if (forwarded != null) {
- forwarded = forwarded + ",";
- }
- else {
- forwarded = "";
+ String forwarded = headers.getFirst("forwarded");
+ StringBuilder builder = new StringBuilder();
+ if (StringUtils.hasText(forwarded)) {
+ builder.append(forwarded).append(",");
}
- forwarded = forwarded + forwarded(uri, webRequest.getHeader("host"));
- headers.set("forwarded", forwarded);
+ builder.append(forwarded(uri, webRequest.getHeader("host")));
+ headers.set("forwarded", builder.toString());
}
private String forwarded(URI uri, String hostHeader) {
From 1f857daa0cc5b97f93a4cba3f02157ec3d7b6166 Mon Sep 17 00:00:00 2001
From: Hyeon Sung
Date: Wed, 22 Jan 2025 21:44:46 +0900
Subject: [PATCH 2/3] This PR refactors the logic for adding headers in the
appendXForwarded and appendForwarded methods
This PR refactors the logic for adding headers in the appendXForwarded and appendForwarded methods.
Signed-off-by: Hyeon Sung
---
.../org/springframework/cloud/gateway/mvc/ProxyExchange.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java b/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
index 9b0ada192f..260a755147 100644
--- a/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
+++ b/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
From c510ae3942a29bb48b97bfc6db3bf2dcad1a913e Mon Sep 17 00:00:00 2001
From: Hyeon Sung
Date: Wed, 22 Jan 2025 21:57:31 +0900
Subject: [PATCH 3/3] add import
add import
Signed-off-by: Hyeon Sung
---
.../org/springframework/cloud/gateway/mvc/ProxyExchange.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java b/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
index 260a755147..1cc4ed2f94 100644
--- a/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
+++ b/spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java
@@ -35,6 +35,7 @@
import java.util.Set;
import java.util.Vector;
import java.util.function.Function;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
import jakarta.servlet.ReadListener;