Skip to content

Commit ed3acaf

Browse files
authored
proxyExchange refactoring
1 parent d5f84f0 commit ed3acaf

File tree

1 file changed

+16
-19
lines changed
  • spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc

1 file changed

+16
-19
lines changed

spring-cloud-gateway-mvc/src/main/java/org/springframework/cloud/gateway/mvc/ProxyExchange.java

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -403,30 +403,27 @@ private void proxy() {
403403

404404
private void appendXForwarded(URI uri) {
405405
// Append the legacy headers if they were already added upstream
406-
String host = headers.getFirst("x-forwarded-host");
407-
if (host == null) {
408-
return;
409-
}
410-
host = host + "," + uri.getHost();
411-
headers.set("x-forwarded-host", host);
412-
String proto = headers.getFirst("x-forwarded-proto");
413-
if (proto == null) {
414-
return;
415-
}
416-
proto = proto + "," + uri.getScheme();
417-
headers.set("x-forwarded-proto", proto);
406+
appendXForwardedHeader("x-forwarded-host", () -> uri.getHost());
407+
appendXForwardedHeader("x-forwarded-proto", () -> uri.getScheme());
408+
}
409+
410+
private void appendXForwardedHeader(String headerName, Supplier<String> uriValue) {
411+
String existingValue = headers.getFirst(headerName);
412+
if (existingValue != null) {
413+
StringBuilder builder = new StringBuilder(existingValue);
414+
builder.append(",").append(uriValue.get());
415+
headers.set(headerName, builder.toString());
416+
}
418417
}
419418

420419
private void appendForwarded(URI uri) {
421420
String forwarded = headers.getFirst("forwarded");
422-
if (forwarded != null) {
423-
forwarded = forwarded + ",";
424-
}
425-
else {
426-
forwarded = "";
421+
StringBuilder sb = new StringBuilder();
422+
if (StringUtils.hasText(forwarded)) {
423+
sb.append(forwarded).append(",");
427424
}
428-
forwarded = forwarded + forwarded(uri, webRequest.getHeader("host"));
429-
headers.set("forwarded", forwarded);
425+
sb.append(forwarded(uri, webRequest.getHeader("host")));
426+
headers.set("forwarded", sb.toString());
430427
}
431428

432429
private String forwarded(URI uri, String hostHeader) {

0 commit comments

Comments
 (0)