Skip to content

Commit

Permalink
Request->getPort() should prefer HTTP_HOST over SERVER_PORT
Browse files Browse the repository at this point in the history
  • Loading branch information
Dennis Hotson authored and fabpot committed Sep 7, 2013
1 parent 1086faf commit 65814ba
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/Symfony/Component/HttpFoundation/Request.php
Expand Up @@ -887,6 +887,14 @@ public function getPort()
}
}

if ($host = $this->headers->get('HOST')) {
if (preg_match('/:(\d+)$/', $host, $matches)) {
return intval($matches[1]);
}

return 'https' === $this->getScheme() ? 443 : 80;
}

return $this->server->get('SERVER_PORT');
}

Expand Down
12 changes: 12 additions & 0 deletions src/Symfony/Component/HttpFoundation/Tests/RequestTest.php
Expand Up @@ -1540,6 +1540,18 @@ public function testTrustedHosts()
// trusted hosts
$request->headers->set('host', 'trusted.com');
$this->assertEquals('trusted.com', $request->getHost());
$this->assertEquals(80, $request->getPort());

$request->server->set('HTTPS', true);
$request->headers->set('host', 'trusted.com');
$this->assertEquals('trusted.com', $request->getHost());
$this->assertEquals(443, $request->getPort());
$request->server->set('HTTPS', false);

$request->headers->set('host', 'trusted.com:8000');
$this->assertEquals('trusted.com', $request->getHost());
$this->assertEquals(8000, $request->getPort());

$request->headers->set('host', 'subdomain.trusted.com');
$this->assertEquals('subdomain.trusted.com', $request->getHost());

Expand Down

0 comments on commit 65814ba

Please sign in to comment.