|
|
@@ -91,9 +91,30 @@ class Minz_Request {
|
|
|
*/
|
|
|
public static function guessBaseUrl() {
|
|
|
$url = 'http';
|
|
|
- $host = empty($_SERVER['HTTP_HOST']) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST'];
|
|
|
- $port = empty($_SERVER['SERVER_PORT']) ? 80 : $_SERVER['SERVER_PORT'];
|
|
|
- if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
|
|
|
+
|
|
|
+ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
|
|
|
+ $https = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https';
|
|
|
+ } else {
|
|
|
+ $https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($_SERVER['HTTP_HOST'])) {
|
|
|
+ $host = $_SERVER['HTTP_HOST'];
|
|
|
+ } elseif (!empty($_SERVER['SERVER_NAME'])) {
|
|
|
+ $host = $_SERVER['SERVER_NAME'];
|
|
|
+ } else {
|
|
|
+ $host = 'localhost';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($_SERVER['HTTP_X_FORWARDED_PORT'])) {
|
|
|
+ $port = intval($_SERVER['HTTP_X_FORWARDED_PORT']);
|
|
|
+ } elseif (!empty($_SERVER['SERVER_PORT'])) {
|
|
|
+ $port = intval($_SERVER['SERVER_PORT']);
|
|
|
+ } else {
|
|
|
+ $port = $https ? 443 : 80;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($https) {
|
|
|
$url .= 's://' . $host . ($port == 443 ? '' : ':' . $port);
|
|
|
} else {
|
|
|
$url .= '://' . $host . ($port == 80 ? '' : ':' . $port);
|