diff --git a/CHANGELOG.md b/CHANGELOG.md index 020d155..a3ae6eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Released: - * [Changed] Improve documentation * [Changed] Add CSS rules for definition lists to default theme * [Fixed] #342: Fix responsiveness in default theme +* [Fixed] #344: Improve HTTPS detection with proxies ``` ### Version 1.0.2 diff --git a/lib/Pico.php b/lib/Pico.php index ffcd6b4..f566a06 100644 --- a/lib/Pico.php +++ b/lib/Pico.php @@ -1237,12 +1237,13 @@ class Pico } $protocol = 'http'; - if (!empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] !== 'off')) { + if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + $secureProxyHeader = strtolower(current(explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO']))); + $protocol = in_array($secureProxyHeader, array('https', 'on', 'ssl', '1')) ? 'https' : 'http'; + } elseif (!empty($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] !== 'off')) { $protocol = 'https'; } elseif ($_SERVER['SERVER_PORT'] == 443) { $protocol = 'https'; - } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')) { - $protocol = 'https'; } $this->config['base_url'] =