public function handle(ComponentContext $componentContext)
{
$request = $componentContext->getHttpRequest();
$trustedRequest = $request->withAttribute(Request::ATTRIBUTE_TRUSTED_PROXY, $this->isFromTrustedProxy($request));
$trustedRequest = $trustedRequest->withAttribute(Request::ATTRIBUTE_CLIENT_IP, $this->getTrustedClientIpAddress($trustedRequest));
$protocolHeader = $this->getFirstTrustedProxyHeaderValue(self::HEADER_PROTOCOL, $trustedRequest);
if ($protocolHeader !== null) {
$trustedRequest->getUri()->setScheme($protocolHeader);
}
$hostHeader = $this->getFirstTrustedProxyHeaderValue(self::HEADER_HOST, $trustedRequest);
if ($hostHeader !== null) {
$trustedRequest->getUri()->setHost($hostHeader);
}
$portHeader = $this->getFirstTrustedProxyHeaderValue(self::HEADER_PORT, $trustedRequest);
if ($portHeader !== null) {
$trustedRequest->getUri()->setPort($portHeader);
} elseif ($protocolHeader !== null) {
$trustedRequest->getUri()->setPort(strtolower($protocolHeader) === 'https' ? 443 : 80);
}
$componentContext->replaceHttpRequest($trustedRequest);
}