From e2fb163be2cc558a6100a3e1af7ec0dbce2d4927 Mon Sep 17 00:00:00 2001 From: Bryan Davis Date: Mon, 25 Aug 2014 21:44:22 -0600 Subject: [PATCH] Use protocol default port with HTTP_X_FORWARDED_PROTO When $_SERVER['HTTP_X_FORWARDED_PROTO'] is set, keep the detected protocol default port rather than using the local server port when creating a canonical URL. Bug: 70021 Change-Id: I2b37da5872929e1c461ff20cccf3dfe11f182a2f --- includes/WebRequest.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/includes/WebRequest.php b/includes/WebRequest.php index a1fa0eb775..b187c4acef 100644 --- a/includes/WebRequest.php +++ b/includes/WebRequest.php @@ -181,7 +181,12 @@ class WebRequest { continue; } $host = $parts[0]; - if ( $parts[1] === false ) { + if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) { + // Bug 70021: Assume that upstream proxy is running on the default + // port based on the protocol. We have no reliable way to determine + // the actual port in use upstream. + $port = $stdPort; + } elseif ( $parts[1] === false ) { if ( isset( $_SERVER['SERVER_PORT'] ) ) { $port = $_SERVER['SERVER_PORT']; } // else leave it as $stdPort -- 2.20.1