Skip to content
Extraits de code Groupes Projets
Valider e2baedc4 rédigé par Thomas Steur's avatar Thomas Steur Validation de Matthieu Aubry
Parcourir les fichiers

make sure we prefer forwarded proto header over regular header (#10081)

parent 7b7df744
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -711,6 +711,10 @@ class Url
*/
protected static function getCurrentSchemeFromRequestHeader()
{
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'http') {
return 'http';
}
if ((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] === true))
|| (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
) {
......
......@@ -72,6 +72,43 @@ class UrlTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($test[4], Url::getCurrentHost(), $description);
}
/**
* @dataProvider getProtocol
*/
public function test_getCurrentScheme_ProtoHeaderShouldPrecedenceHttpsHeader($proto)
{
$_SERVER['HTTPS'] = 'on';
$_SERVER['HTTP_X_FORWARDED_PROTO'] = $proto;
$this->assertEquals($proto, Url::getCurrentScheme());
unset($_SERVER['HTTP_X_FORWARDED_PROTO']);
unset($_SERVER['HTTPS']);
}
/**
* @dataProvider getProtocol
*/
public function test_getCurrentScheme_shouldDetectSecureFromHttpsHeader()
{
$_SERVER['HTTPS'] = 'on';
$this->assertEquals('https', Url::getCurrentScheme());
unset($_SERVER['HTTPS']);
}
/**
* @dataProvider getProtocol
*/
public function test_getCurrentScheme_shouldBeHttpByDefault()
{
$this->assertEquals('http', Url::getCurrentScheme());
}
public function getProtocol()
{
return array(array('http'), array('https'));
}
/**
* Dataprovider for testIsLocalUrl
*/
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter