diff --git a/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php b/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php index ee304d73717f..83120634a35b 100644 --- a/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php +++ b/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php @@ -36,12 +36,17 @@ public function __construct($charset) */ public function onCoreResponse(FilterResponseEvent $event) { + $request = $event->getRequest(); + $response = $event->getResponse(); + + if ('HEAD' === $request->getMethod()) { + $response->setContent(''); + } + if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } - $response = $event->getResponse(); - if (null === $response->getCharset()) { $response->setCharset($this->charset); } @@ -50,7 +55,6 @@ public function onCoreResponse(FilterResponseEvent $event) return; } - $request = $event->getRequest(); $format = $request->getRequestFormat(); if ((null !== $format) && $mimeType = $request->getMimeType($format)) { $response->headers->set('Content-Type', $mimeType); diff --git a/tests/Symfony/Tests/Component/HttpKernel/EventListener/ResponseListenerTest.php b/tests/Symfony/Tests/Component/HttpKernel/EventListener/ResponseListenerTest.php index afc5fc561e37..cace52126c77 100644 --- a/tests/Symfony/Tests/Component/HttpKernel/EventListener/ResponseListenerTest.php +++ b/tests/Symfony/Tests/Component/HttpKernel/EventListener/ResponseListenerTest.php @@ -76,4 +76,15 @@ public function testFilterSetContentType() $this->assertEquals('application/json', $event->getResponse()->headers->get('content-type')); } + + public function testFilterRemovesContentForHeadRequests() + { + $response = new Response('foo'); + $request = Request::create('/', 'HEAD'); + + $event = new FilterResponseEvent($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response); + $this->dispatcher->dispatch(CoreEvents::RESPONSE, $event); + + $this->assertEquals('', $response->getContent()); + } }