From 8e4be773685f7dff074f23e2df13072577091f44 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 3 Jan 2017 14:17:05 +0100 Subject: [PATCH] Hide default port in local URL behind a reverse proxy --- application/HttpUtils.php | 12 ++++++++++-- tests/HttpUtils/ServerUrlTest.php | 13 +++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/application/HttpUtils.php b/application/HttpUtils.php index e705cfd..e8fc1f5 100644 --- a/application/HttpUtils.php +++ b/application/HttpUtils.php @@ -297,9 +297,17 @@ function server_url($server) // Keep forwarded port if (strpos($server['HTTP_X_FORWARDED_PORT'], ',') !== false) { $ports = explode(',', $server['HTTP_X_FORWARDED_PORT']); - $port = ':' . trim($ports[0]); + $port = trim($ports[0]); } else { - $port = ':' . $server['HTTP_X_FORWARDED_PORT']; + $port = $server['HTTP_X_FORWARDED_PORT']; + } + + if (($scheme == 'http' && $port != '80') + || ($scheme == 'https' && $port != '443') + ) { + $port = ':' . $port; + } else { + $port = ''; } } diff --git a/tests/HttpUtils/ServerUrlTest.php b/tests/HttpUtils/ServerUrlTest.php index 8a55a22..7fdad65 100644 --- a/tests/HttpUtils/ServerUrlTest.php +++ b/tests/HttpUtils/ServerUrlTest.php @@ -68,6 +68,19 @@ class ServerUrlTest extends PHPUnit_Framework_TestCase ) ); + $this->assertEquals( + 'https://host.tld', + server_url( + array( + 'HTTPS' => 'Off', + 'SERVER_NAME' => 'host.tld', + 'SERVER_PORT' => '80', + 'HTTP_X_FORWARDED_PROTO' => 'https', + 'HTTP_X_FORWARDED_PORT' => '443' + ) + ) + ); + $this->assertEquals( 'https://host.tld:4974', server_url(