Skip to content

Commit b5f524d

Browse files
Naktibaldafabpot
authored andcommitted
[BrowserKit] Corrected HTTP_HOST logic #15398
1 parent 72fa3bd commit b5f524d

File tree

2 files changed

+13
-32
lines changed

2 files changed

+13
-32
lines changed

src/Symfony/Component/BrowserKit/Client.php

+4-7
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ public function insulate($insulated = true)
110110
public function setServerParameters(array $server)
111111
{
112112
$this->server = array_merge(array(
113-
'HTTP_HOST' => 'localhost',
114113
'HTTP_USER_AGENT' => 'Symfony2 BrowserKit',
115114
), $server);
116115
}
@@ -273,21 +272,19 @@ public function request($method, $uri, array $parameters = array(), array $files
273272

274273
$uri = $this->getAbsoluteUri($uri);
275274

276-
if (!empty($server['HTTP_HOST'])) {
277-
$uri = preg_replace('{^(https?\://)'.preg_quote($this->extractHost($uri)).'}', '${1}'.$server['HTTP_HOST'], $uri);
278-
}
275+
$server = array_merge($this->server, $server);
279276

280277
if (isset($server['HTTPS'])) {
281278
$uri = preg_replace('{^'.parse_url($uri, PHP_URL_SCHEME).'}', $server['HTTPS'] ? 'https' : 'http', $uri);
282279
}
283280

284-
$server = array_merge($this->server, $server);
285-
286281
if (!$this->history->isEmpty()) {
287282
$server['HTTP_REFERER'] = $this->history->current()->getUri();
288283
}
289284

290-
$server['HTTP_HOST'] = $this->extractHost($uri);
285+
if (empty($server['HTTP_HOST'])) {
286+
$server['HTTP_HOST'] = $this->extractHost($uri);
287+
}
291288
$server['HTTPS'] = 'https' == parse_url($uri, PHP_URL_SCHEME);
292289

293290
$this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);

src/Symfony/Component/BrowserKit/Tests/ClientTest.php

+9-25
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,14 @@ public function testGetRequest()
9393
$this->assertEquals('http://example.com/', $client->getRequest()->getUri(), '->getCrawler() returns the Request of the last request');
9494
}
9595

96-
public function testGetRequestWithIpAsHost()
96+
public function testGetRequestWithIpAsHttpHost()
9797
{
9898
$client = new TestClient();
9999
$client->request('GET', 'https://example.com/foo', array(), array(), array('HTTP_HOST' => '127.0.0.1'));
100100

101-
$this->assertEquals('https://127.0.0.1/foo', $client->getRequest()->getUri());
101+
$this->assertEquals('https://example.com/foo', $client->getRequest()->getUri());
102+
$headers = $client->getRequest()->getServer();
103+
$this->assertEquals('127.0.0.1', $headers['HTTP_HOST']);
102104
}
103105

104106
public function testGetResponse()
@@ -212,24 +214,6 @@ public function testRequestURIConversion()
212214
$this->assertEquals('http://www.example.com/http', $client->getRequest()->getUri(), '->request() uses the previous request for relative URLs');
213215
}
214216

215-
public function testRequestURIConversionByServerHost()
216-
{
217-
$client = new TestClient();
218-
219-
$server = array('HTTP_HOST' => 'www.exampl+e.com:8000');
220-
$parameters = array();
221-
$files = array();
222-
223-
$client->request('GET', 'http://exampl+e.com', $parameters, $files, $server);
224-
$this->assertEquals('http://www.exampl+e.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST to add port');
225-
226-
$client->request('GET', 'http://exampl+e.com:8888', $parameters, $files, $server);
227-
$this->assertEquals('http://www.exampl+e.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST to modify existing port');
228-
229-
$client->request('GET', 'http://exampl+e.com:8000', $parameters, $files, $server);
230-
$this->assertEquals('http://www.exampl+e.com:8000', $client->getRequest()->getUri(), '->request() uses HTTP_HOST respects correct set port');
231-
}
232-
233217
public function testRequestReferer()
234218
{
235219
$client = new TestClient();
@@ -572,7 +556,7 @@ public function testInsulatedRequests()
572556
public function testGetServerParameter()
573557
{
574558
$client = new TestClient();
575-
$this->assertEquals('localhost', $client->getServerParameter('HTTP_HOST'));
559+
$this->assertEquals('', $client->getServerParameter('HTTP_HOST'));
576560
$this->assertEquals('Symfony2 BrowserKit', $client->getServerParameter('HTTP_USER_AGENT'));
577561
$this->assertEquals('testvalue', $client->getServerParameter('testkey', 'testvalue'));
578562
}
@@ -581,7 +565,7 @@ public function testSetServerParameter()
581565
{
582566
$client = new TestClient();
583567

584-
$this->assertEquals('localhost', $client->getServerParameter('HTTP_HOST'));
568+
$this->assertEquals('', $client->getServerParameter('HTTP_HOST'));
585569
$this->assertEquals('Symfony2 BrowserKit', $client->getServerParameter('HTTP_USER_AGENT'));
586570

587571
$client->setServerParameter('HTTP_HOST', 'testhost');
@@ -595,7 +579,7 @@ public function testSetServerParameterInRequest()
595579
{
596580
$client = new TestClient();
597581

598-
$this->assertEquals('localhost', $client->getServerParameter('HTTP_HOST'));
582+
$this->assertEquals('', $client->getServerParameter('HTTP_HOST'));
599583
$this->assertEquals('Symfony2 BrowserKit', $client->getServerParameter('HTTP_USER_AGENT'));
600584

601585
$client->request('GET', 'https://www.example.com/https/www.example.com', array(), array(), array(
@@ -605,10 +589,10 @@ public function testSetServerParameterInRequest()
605589
'NEW_SERVER_KEY' => 'new-server-key-value',
606590
));
607591

608-
$this->assertEquals('localhost', $client->getServerParameter('HTTP_HOST'));
592+
$this->assertEquals('', $client->getServerParameter('HTTP_HOST'));
609593
$this->assertEquals('Symfony2 BrowserKit', $client->getServerParameter('HTTP_USER_AGENT'));
610594

611-
$this->assertEquals('http://testhost/https/www.example.com', $client->getRequest()->getUri());
595+
$this->assertEquals('http://www.example.com/https/www.example.com', $client->getRequest()->getUri());
612596

613597
$server = $client->getRequest()->getServer();
614598

0 commit comments

Comments
 (0)