Skip to content

Commit d9c3cf4

Browse files
committed
[HttpFoundation] reintroduce set trusted header name in request
1 parent fdaf0e0 commit d9c3cf4

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

src/Symfony/Component/HttpFoundation/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ CHANGELOG
66

77
* passing arguments to `Request::isMethodSafe()` is deprecated.
88
* `ApacheRequest` is deprecated, use the `Request` class instead.
9+
* added `setTrustedHeaderName()` method to the `Request` class.
910

1011
4.3.0
1112
-----

src/Symfony/Component/HttpFoundation/Request.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,23 @@ public static function setTrustedHosts(array $hostPatterns)
610610
self::$trustedHosts = [];
611611
}
612612

613+
/**
614+
* Sets the name for trusted headers.
615+
*
616+
* @param int $type A bit field like Request::HEADER_*, to set which headers to trust from your proxies
617+
* @param string $value The header name
618+
*
619+
* @throws \InvalidArgumentException
620+
*/
621+
public static function setTrustedHeaderName(int $type, string $value): void
622+
{
623+
if (!isset(self::$trustedHeaders[$type])) {
624+
throw new \InvalidArgumentException(sprintf('Unable to set the trusted header name for type "%s".', $type));
625+
}
626+
627+
self::$trustedHeaders[$type] = $value;
628+
}
629+
613630
/**
614631
* Gets the list of trusted host patterns.
615632
*

src/Symfony/Component/HttpFoundation/Tests/RequestTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2325,6 +2325,20 @@ public function testTrustedPortDoesNotDefaultToZero()
23252325

23262326
$this->assertSame(80, $request->getPort());
23272327
}
2328+
2329+
public function testSetTrustedHeaderName()
2330+
{
2331+
$request = Request::create('http://example.com/');
2332+
$request->server->set('REMOTE_ADDR', '1.1.1.1');
2333+
$request->headers->set('X_CUSTOM_FORWARDED_PORT', '8888');
2334+
2335+
$this->assertSame(80, $request->getPort());
2336+
2337+
$request::setTrustedHeaderName(Request::HEADER_X_FORWARDED_PORT, 'X_CUSTOM_FORWARDED_PORT');
2338+
Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_PORT);
2339+
2340+
$this->assertSame(8888, $request->getPort());
2341+
}
23282342
}
23292343

23302344
class RequestContentProxy extends Request

0 commit comments

Comments
 (0)