diff --git a/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php index 1bd3da4547..54d17d28c7 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php @@ -11,6 +11,7 @@ namespace Symfony\Component\HttpKernel\DataCollector; +use Symfony\Component\HttpFoundation\Cookie; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -128,21 +129,24 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter unset($this->controllers[$request]); } - if (null !== $session) { - if ($request->attributes->has('_redirected')) { - $this->data['redirect'] = $session->remove('sf_redirect'); - } + if ($request->attributes->has('_redirected') && $redirectCookie = $request->cookies->get('sf_redirect')) { + $this->data['redirect'] = json_decode($redirectCookie, true); - if ($response->isRedirect()) { - $session->set('sf_redirect', array( + $response->headers->clearCookie('sf_redirect'); + } + + if ($response->isRedirect()) { + $response->headers->setCookie(new Cookie( + 'sf_redirect', + json_encode(array( 'token' => $response->headers->get('x-debug-token'), 'route' => $request->attributes->get('_route', 'n/a'), 'method' => $request->getMethod(), 'controller' => $this->parseController($request->attributes->get('_controller')), 'status_code' => $statusCode, 'status_text' => Response::$statusTexts[(int) $statusCode], - )); - } + )) + )); } $this->data['identifier'] = $this->data['route'] ?: (is_array($this->data['controller']) ? $this->data['controller']['class'].'::'.$this->data['controller']['method'].'()' : $this->data['controller']); @@ -312,11 +316,11 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter public function onKernelResponse(FilterResponseEvent $event) { - if (!$event->isMasterRequest() || !$event->getRequest()->hasSession()) { + if (!$event->isMasterRequest()) { return; } - if ($event->getRequest()->getSession()->has('sf_redirect')) { + if ($event->getRequest()->cookies->has('sf_redirect')) { $event->getRequest()->attributes->set('_redirected', true); } }