From 0a39fc1a3a75ce1be632cad20d7b271491395073 Mon Sep 17 00:00:00 2001 From: Peter Rehm Date: Sun, 5 Jun 2016 18:33:19 +0200 Subject: [PATCH 1/4] Do not inject toolbar if content disposition header attachment is defined --- .../EventListener/WebDebugToolbarListener.php | 5 +++++ .../EventListener/WebDebugToolbarListenerTest.php | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php index ee537af4f9889..a07615d42dcbe 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php +++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php @@ -112,6 +112,11 @@ public function onKernelResponse(FilterResponseEvent $event) */ protected function injectToolbar(Response $response, Request $request) { + // The toolbar shall not be injected if the header enforces a download of the content + if (false !== strpos($response->headers->get('Content-Disposition'), 'attachment')) { + return; + } + $content = $response->getContent(); $pos = strripos($content, ''); diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php index e5d95471ae09f..f5aa3f4ab8531 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php @@ -82,6 +82,21 @@ public function testToolbarIsInjected() $this->assertEquals("\nWDT\n", $response->getContent()); } + /** + * @depends testToolbarIsInjected + */ + public function testToolbarIsNotInjectedOnContentDispositionAttachment() + { + $response = new Response(''); + $response->headers->set('Content-Disposition', 'attachment; filename=test.html'); + $event = new FilterResponseEvent($this->getKernelMock(), $this->getRequestMock(false, 'html'), HttpKernelInterface::MASTER_REQUEST, $response); + + $listener = new WebDebugToolbarListener($this->getTwigMock()); + $listener->onKernelResponse($event); + + $this->assertEquals('', $response->getContent()); + } + /** * @depends testToolbarIsInjected * @dataProvider provideRedirects From badf47ab9fc994fde7f66b3e1798436bd5785e54 Mon Sep 17 00:00:00 2001 From: Peter Rehm Date: Mon, 6 Jun 2016 18:09:47 +0200 Subject: [PATCH 2/4] Moved the condition --- .../EventListener/WebDebugToolbarListener.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php index a07615d42dcbe..317ea1c545d3e 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php +++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php @@ -98,6 +98,7 @@ public function onKernelResponse(FilterResponseEvent $event) || $response->isRedirection() || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html')) || 'html' !== $request->getRequestFormat() + || false !== strpos($response->headers->get('Content-Disposition'), 'attachment') ) { return; } @@ -112,11 +113,6 @@ public function onKernelResponse(FilterResponseEvent $event) */ protected function injectToolbar(Response $response, Request $request) { - // The toolbar shall not be injected if the header enforces a download of the content - if (false !== strpos($response->headers->get('Content-Disposition'), 'attachment')) { - return; - } - $content = $response->getContent(); $pos = strripos($content, ''); From 9f60ba663e615b5caf08af5975778405c5442d53 Mon Sep 17 00:00:00 2001 From: Peter Rehm Date: Tue, 7 Jun 2016 07:36:01 +0200 Subject: [PATCH 3/4] Made check case insensitive --- .../WebProfilerBundle/EventListener/WebDebugToolbarListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php index 317ea1c545d3e..b064c732143a0 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php +++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php @@ -98,7 +98,7 @@ public function onKernelResponse(FilterResponseEvent $event) || $response->isRedirection() || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html')) || 'html' !== $request->getRequestFormat() - || false !== strpos($response->headers->get('Content-Disposition'), 'attachment') + || false !== strpos(strtolower($response->headers->get('Content-Disposition')), 'attachment;') ) { return; } From 91d4a9e3b7d6f97fac780d47456f04787f093396 Mon Sep 17 00:00:00 2001 From: Peter Rehm Date: Wed, 8 Jun 2016 11:09:39 +0200 Subject: [PATCH 4/4] Updated to stripos --- .../WebProfilerBundle/EventListener/WebDebugToolbarListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php index b064c732143a0..ab67078dd6ecd 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php +++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php @@ -98,7 +98,7 @@ public function onKernelResponse(FilterResponseEvent $event) || $response->isRedirection() || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html')) || 'html' !== $request->getRequestFormat() - || false !== strpos(strtolower($response->headers->get('Content-Disposition')), 'attachment;') + || false !== stripos($response->headers->get('Content-Disposition'), 'attachment;') ) { return; }