);
}
+ /**
+ * Detect a Proxy that sets Forwarded-Host
+ */
+ public function testHttpsProxyForwardedHost()
+ {
+ $this->assertEquals(
+ 'https://host.tld:8080',
+ server_url(
+ array(
+ 'HTTP_X_FORWARDED_PROTO' => 'https',
+ 'HTTP_X_FORWARDED_PORT' => '8080',
+ 'HTTP_X_FORWARDED_HOST' => 'host.tld'
+ )
+ )
+ );
+
+ $this->assertEquals(
+ 'https://host.tld:4974',
+ server_url(
+ array(
+ 'HTTP_X_FORWARDED_PROTO' => 'https, https',
+ 'HTTP_X_FORWARDED_PORT' => '4974, 80',
+ 'HTTP_X_FORWARDED_HOST' => 'host.tld, example.com'
+ )
+ )
+ );
+ }
+
/**
* Detect a Proxy with SSL enabled
*/
)
);
}
+
+ /**
+ * Misconfigured server (see #1022): Proxy HTTP but 443
+ */
+ public function testHttpWithPort433()
+ {
+ $this->assertEquals(
+ 'https://host.tld',
+ server_url(
+ array(
+ 'HTTPS' => 'Off',
+ 'SERVER_NAME' => 'host.tld',
+ 'SERVER_PORT' => '80',
+ 'HTTP_X_FORWARDED_PROTO' => 'http',
+ 'HTTP_X_FORWARDED_PORT' => '443'
+ )
+ )
+ );
+
+ $this->assertEquals(
+ 'https://host.tld',
+ server_url(
+ array(
+ 'HTTPS' => 'Off',
+ 'SERVER_NAME' => 'host.tld',
+ 'SERVER_PORT' => '80',
+ 'HTTP_X_FORWARDED_PROTO' => 'https, http',
+ 'HTTP_X_FORWARDED_PORT' => '443, 80'
+ )
+ )
+ );
+ }
}