Neos\Flow\Http\Component\TrustedProxiesComponent::handle PHP Метод

handle() публичный Метод

public handle ( ComponentContext $componentContext ) : void
$componentContext ComponentContext
Результат void
    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);
    }

Usage Example

 /**
  * @param Request $request
  * @return Request
  */
 protected function callWithRequest($request)
 {
     $componentContext = new ComponentContext($request, $this->mockHttpResponse);
     $this->trustedProxiesComponent->handle($componentContext);
     return $componentContext->getHttpRequest();
 }