Improve HTTPS detection with proxies

Fixes #344. Thanks @Robby-

Implementation details taken from Symfony 3.0.4, method \Symfony\Component\HttpFoundation\Request::isSecure(), see https://github.com/symfony/symfony/blob/v3.0.4/src/Symfony/Component/HttpFoundation/Request.php#L1169-L1192
This commit is contained in:
Daniel Rudolf 2016-04-17 02:44:41 +02:00
parent 27d32430ee
commit 8dfb1b14c7
No known key found for this signature in database
GPG key ID: A061F02CD8DE4538
2 changed files with 5 additions and 3 deletions

View file

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

View file

@ -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'] =