X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fstrings.php;h=14015cc0c6716af5d22bfb861cbf27bcea9c6a73;hb=e4835cf2091559618969be69c9bd745d6cc1fb20;hp=eff1ba661af8900a0782cdc0dcbbdd5779b749c9;hpb=4b5049de2fa934c45599d6e4c74bf2bbee10d34d;p=squirrelmail.git diff --git a/functions/strings.php b/functions/strings.php index eff1ba66..14015cc0 100644 --- a/functions/strings.php +++ b/functions/strings.php @@ -496,11 +496,15 @@ function get_location () { /* * If you have 'SSLOptions +StdEnvVars' in your apache config * OR if you have HTTPS=on in your HTTP_SERVER_VARS + * OR if you have HTTP_X_FORWARDED_PROTO=https in your HTTP_SERVER_VARS * OR if you are on port 443 */ $getEnvVar = getenv('HTTPS'); + if (!sqgetGlobalVar('HTTP_X_FORWARDED_PROTO', $forwarded_proto, SQ_SERVER)) + $forwarded_proto = ''; if ((isset($getEnvVar) && strcasecmp($getEnvVar, 'on') === 0) || (sqgetGlobalVar('HTTPS', $https_on, SQ_SERVER) && strcasecmp($https_on, 'on') === 0) || + (strcasecmp($forwarded_proto, 'https') === 0) || (sqgetGlobalVar('SERVER_PORT', $server_port, SQ_SERVER) && $server_port == 443)) { $proto = 'https://'; } @@ -518,7 +522,8 @@ function get_location () { if (! strstr($host, ':')) { if (sqgetGlobalVar('SERVER_PORT', $server_port, SQ_SERVER)) { if (($server_port != 80 && $proto == 'http://') || - ($server_port != 443 && $proto == 'https://')) { + ($server_port != 443 && $proto == 'https://' && + strcasecmp($forwarded_proto, 'https') !== 0)) { $port = sprintf(':%d', $server_port); } }