public function render($uri, Request $request, array $options = array()) { if ($this->substitute) { return $this->defaultStrategy->render($uri, $request, $options); } if ($this->useHeader && !\strpos($request->headers->get('Surrogate-Capability', ''), 'SSI/1.0')) { return $this->defaultStrategy->render($uri, $request, $options); } if ($uri instanceof ControllerReference) { $uri = $this->generateFragmentUri($uri, $request); } $uri = $this->signer->sign((substr($uri, 0, 1) == "/" ? $request->getSchemeAndHttpHost() : "") . $uri); if (!\strncmp($uri, $request->getSchemeAndHttpHost(), \strlen($request->getSchemeAndHttpHost()))) { $uri = \substr($uri, \strlen($request->getSchemeAndHttpHost())); } return new Response(\sprintf('<!--#include virtual="%s" -->', $uri)); }
public function testESIHeaderIsKeptInSubrequest() { $expectedSubRequest = Request::create('/'); $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); } $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest)); $request = Request::create('/'); $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); $strategy->render('/', $request); }
public function testHeadersPossiblyResultingIn304AreNotAssignedToSubrequest() { $expectedSubRequest = Request::create('/'); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); } $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest)); $request = Request::create('/', 'GET', array(), array(), array(), array('HTTP_IF_MODIFIED_SINCE' => 'Fri, 01 Jan 2016 00:00:00 GMT', 'HTTP_IF_NONE_MATCH' => '*')); $strategy->render('/', $request); }
public function testESIHeaderIsKeptInSubrequest() { $expectedSubRequest = Request::create('/'); $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); } $kernel = $this->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface'); $kernel->expects($this->any())->method('handle')->with($expectedSubRequest); $strategy = new InlineFragmentRenderer($kernel); $request = Request::create('/'); $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); $strategy->render('/', $request); }
/** * {@inheritdoc} */ public function render($uri, Request $request, array $options = array()) { $options['ignore_errors'] = false; return parent::render($uri, $request, $options); }
public function testESIHeaderIsKeptInSubrequest() { $expectedSubRequest = Request::create('/'); $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); $kernel = $this->getMock('Symfony\\Component\\HttpKernel\\HttpKernelInterface'); $kernel->expects($this->any())->method('handle')->with($expectedSubRequest); $strategy = new InlineFragmentRenderer($kernel); $request = Request::create('/'); $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); $strategy->render('/', $request); }
public function testExceptionInSubRequestsDoesNotMangleOutputBuffers() { $resolver = $this->getMock('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface'); $resolver->expects($this->once())->method('getController')->will($this->returnValue(function () { ob_start(); echo 'bar'; throw new \RuntimeException(); })); $resolver->expects($this->once())->method('getArguments')->will($this->returnValue(array())); $kernel = new HttpKernel(new EventDispatcher(), $resolver); $renderer = new InlineFragmentRenderer($kernel); // simulate a main request with output buffering ob_start(); echo 'Foo'; // simulate a sub-request with output buffering and an exception $renderer->render('/', Request::create('/'), array('ignore_errors' => true)); $this->assertEquals('Foo', ob_get_clean()); }