diff options
Diffstat (limited to 'application/HttpUtils.php')
-rw-r--r-- | application/HttpUtils.php | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/application/HttpUtils.php b/application/HttpUtils.php index e2c1cb47..af7cb371 100644 --- a/application/HttpUtils.php +++ b/application/HttpUtils.php | |||
@@ -106,11 +106,21 @@ function server_url($server) | |||
106 | // Shaarli is served behind a proxy | 106 | // Shaarli is served behind a proxy |
107 | if (isset($server['HTTP_X_FORWARDED_PROTO'])) { | 107 | if (isset($server['HTTP_X_FORWARDED_PROTO'])) { |
108 | // Keep forwarded scheme | 108 | // Keep forwarded scheme |
109 | $scheme = $server['HTTP_X_FORWARDED_PROTO']; | 109 | if (strpos($server['HTTP_X_FORWARDED_PROTO'], ',') !== false) { |
110 | $schemes = explode(',', $server['HTTP_X_FORWARDED_PROTO']); | ||
111 | $scheme = trim($schemes[0]); | ||
112 | } else { | ||
113 | $scheme = $server['HTTP_X_FORWARDED_PROTO']; | ||
114 | } | ||
110 | 115 | ||
111 | if (isset($server['HTTP_X_FORWARDED_PORT'])) { | 116 | if (isset($server['HTTP_X_FORWARDED_PORT'])) { |
112 | // Keep forwarded port | 117 | // Keep forwarded port |
113 | $port = ':'.$server['HTTP_X_FORWARDED_PORT']; | 118 | if (strpos($server['HTTP_X_FORWARDED_PORT'], ',') !== false) { |
119 | $ports = explode(',', $server['HTTP_X_FORWARDED_PORT']); | ||
120 | $port = ':' . trim($ports[0]); | ||
121 | } else { | ||
122 | $port = ':' . $server['HTTP_X_FORWARDED_PORT']; | ||
123 | } | ||
114 | } | 124 | } |
115 | 125 | ||
116 | return $scheme.'://'.$server['SERVER_NAME'].$port; | 126 | return $scheme.'://'.$server['SERVER_NAME'].$port; |