Hide default port in local URL behind a reverse proxy

This commit is contained in:
ArthurHoaro 2017-01-03 14:17:05 +01:00
parent 436479c58f
commit 8e4be77368
2 changed files with 23 additions and 2 deletions

View File

@ -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 = '';
}
}

View File

@ -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(