From 9624ea392aa1a97f3e52f383e9c62ac3c84c04eb Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Thu, 2 Mar 2023 10:17:44 +0000 Subject: [PATCH] Resolve baseUrl to String vs temporary URI Along the lines of what was suggested in #30047. Closes gh-30062 --- .../server/reactive/ReactorServerHttpRequest.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java index fae7d1ce04..bcb76e7ab6 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java @@ -76,17 +76,15 @@ class ReactorServerHttpRequest extends AbstractServerHttpRequest { return new URI(resolveBaseUrl(request) + resolveRequestUri(request)); } - private static URI resolveBaseUrl(HttpServerRequest request) throws URISyntaxException { - String scheme = getScheme(request); + private static String resolveBaseUrl(HttpServerRequest request) { + String scheme = request.scheme(); int port = request.hostPort(); - return ((scheme.equals("http") || scheme.equals("ws")) && (port != 80)) || - ((scheme.equals("https") || scheme.equals("wss")) && (port != 443)) ? - new URI(scheme, null, request.hostName(), port, null, null, null) : - new URI(scheme, request.hostName(), null, null); + return scheme + "://" + request.hostName() + (usePort(scheme, port) ? ":" + port : ""); } - private static String getScheme(HttpServerRequest request) { - return request.scheme(); + private static boolean usePort(String scheme, int port) { + return ((scheme.equals("http") || scheme.equals("ws")) && (port != 80)) || + ((scheme.equals("https") || scheme.equals("wss")) && (port != 443)); } private static String resolveRequestUri(HttpServerRequest request) {