protected function createSubRequest($uri, Request $request) {
$cookies = $request->cookies
->all();
$server = $request->server
->all();
// Override the arguments to emulate a sub-request.
// Sub-request object will point to localhost as client ip and real client ip
// will be included into trusted header for client ip
try {
$trustedHeaderName = Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP);
$currentXForwardedFor = $request->headers
->get($trustedHeaderName, '');
$server['HTTP_' . $trustedHeaderName] = ($currentXForwardedFor ? $currentXForwardedFor . ', ' : '') . $request
->getClientIp();
} catch (\InvalidArgumentException $e) {
// Do nothing
}
$server['REMOTE_ADDR'] = '127.0.0.1';
$subRequest = $request::create($uri, 'get', array(), $cookies, array(), $server);
if ($request->headers
->has('Surrogate-Capability')) {
$subRequest->headers
->set('Surrogate-Capability', $request->headers
->get('Surrogate-Capability'));
}
if ($session = $request
->getSession()) {
$subRequest
->setSession($session);
}
return $subRequest;
}