From 31994c3b9c80032e6a998be7ee477f506043bf5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20L=C3=A4ll?= Date: Tue, 14 Oct 2025 16:39:18 +0300 Subject: [PATCH] Original missing port should not be ignored. Fixes https://github.com/FusionAuth/fusionauth-issues/issues/3207 by parsing the missing port from the Host header correctly --- src/main/java/io/fusionauth/http/server/HTTPRequest.java | 8 ++++++++ src/test/java/io/fusionauth/http/HTTPRequestTest.java | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/fusionauth/http/server/HTTPRequest.java b/src/main/java/io/fusionauth/http/server/HTTPRequest.java index 16dc7b87..341c8d92 100644 --- a/src/main/java/io/fusionauth/http/server/HTTPRequest.java +++ b/src/main/java/io/fusionauth/http/server/HTTPRequest.java @@ -801,6 +801,14 @@ private void decodeHeader(String name, String value) { } } } else { + if ("http".equalsIgnoreCase(scheme)) { + this.port = 80; + } + else if ("https".equalsIgnoreCase(scheme)) { + this.port = 443; + } else { + // fallback, intentionally do nothing + } this.host = value; } break; diff --git a/src/test/java/io/fusionauth/http/HTTPRequestTest.java b/src/test/java/io/fusionauth/http/HTTPRequestTest.java index a8bc90f9..e5e9df3e 100644 --- a/src/test/java/io/fusionauth/http/HTTPRequestTest.java +++ b/src/test/java/io/fusionauth/http/HTTPRequestTest.java @@ -137,8 +137,8 @@ public void getIPAddress() { @Test public void hostHeaderPortHandling() { // positive cases - assertURLs("http", "myhost", "myhost", -1, "http://myhost"); - assertURLs("https", "myhost", "myhost", -1, "https://myhost"); + assertURLs("http", "myhost", "myhost", 80, "http://myhost"); + assertURLs("https", "myhost", "myhost", 443, "https://myhost"); assertURLs("http", "myhost:80", "myhost", 80, "http://myhost"); assertURLs("https", "myhost:80", "myhost", 80, "https://myhost:80"); assertURLs("http", "myhost:443", "myhost", 443, "http://myhost:443");