Prechádzať zdrojové kódy

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
Daniel Rudolf 9 rokov pred
rodič
commit
8dfb1b14c7
2 zmenil súbory, kde vykonal 5 pridanie a 3 odobranie
  1. 1 0
      CHANGELOG.md
  2. 4 3
      lib/Pico.php

+ 1 - 0
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

+ 4 - 3
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'] =