diff --git a/app/code/Magento/MediaStorage/Model/File/Storage/Response.php b/app/code/Magento/MediaStorage/Model/File/Storage/Response.php
index ba0f47afacaac18635c4c03a34e8af61c758321a..bedbef698965cde0c29b5778ee6904e319bf7f72 100644
--- a/app/code/Magento/MediaStorage/Model/File/Storage/Response.php
+++ b/app/code/Magento/MediaStorage/Model/File/Storage/Response.php
@@ -29,15 +29,17 @@ class Response extends Http implements \Magento\Framework\App\Response\FileInter
      * @param CookieManagerInterface $cookieManager
      * @param CookieMetadataFactory $cookieMetadataFactory
      * @param \Magento\Framework\App\Http\Context $context
+     * @param \Magento\Framework\Stdlib\DateTime $dateTime
      * @param \Magento\Framework\File\Transfer\Adapter\Http $transferAdapter
      */
     public function __construct(
         CookieManagerInterface $cookieManager,
         CookieMetadataFactory $cookieMetadataFactory,
         \Magento\Framework\App\Http\Context $context,
+        \Magento\Framework\Stdlib\DateTime $dateTime,
         \Magento\Framework\File\Transfer\Adapter\Http $transferAdapter
     ) {
-        parent::__construct($cookieManager, $cookieMetadataFactory, $context);
+        parent::__construct($cookieManager, $cookieMetadataFactory, $context, $dateTime);
         $this->_transferAdapter = $transferAdapter;
     }
 
diff --git a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/TestCase/ControllerAbstractTest.php b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/TestCase/ControllerAbstractTest.php
index f8d7b83b9dd7c3bdc59136438d847546a43d5c05..edd2d4e255b92fb7ff4c1fb1ccd4ec40fdb63dd2 100644
--- a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/TestCase/ControllerAbstractTest.php
+++ b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/TestCase/ControllerAbstractTest.php
@@ -17,19 +17,11 @@ class ControllerAbstractTest extends \Magento\TestFramework\TestCase\AbstractCon
 
     protected function setUp()
     {
-        $this->messageManager = $this->getMock('\Magento\Framework\Message\Manager', [], [], '', false);
-        $request = new \Magento\TestFramework\Request(
-            $this->getMock('Magento\Framework\Stdlib\Cookie\CookieReaderInterface'),
-            $this->getMock('Magento\Framework\App\Route\ConfigInterface\Proxy', [], [], '', false),
-            $this->getMock('Magento\Framework\App\Request\PathInfoProcessorInterface'),
-            $this->getMock('Magento\Framework\ObjectManagerInterface')
-        );
-        $response = new \Magento\TestFramework\Response(
-            $this->getMock('Magento\Framework\Stdlib\CookieManagerInterface'),
-            $this->getMock('Magento\Framework\Stdlib\Cookie\CookieMetadataFactory', [], [], '', false),
-            $this->getMock('Magento\Framework\App\Http\Context', [], [], '', false)
-        );
+        $testObjectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
 
+        $this->messageManager = $this->getMock('\Magento\Framework\Message\Manager', [], [], '', false);
+        $request = $testObjectManager->getObject('Magento\TestFramework\Request');
+        $response = $testObjectManager->getObject('Magento\TestFramework\Response');
         $this->_objectManager = $this->getMock(
             'Magento\TestFramework\ObjectManager',
             ['get', 'create'],
diff --git a/lib/internal/Magento/Framework/App/Response/Http.php b/lib/internal/Magento/Framework/App/Response/Http.php
index 63da363b6dacb2fb0632d4b3f082f23981a35a4f..6b510679daadc5b371fcf9c67f36ddfa7487ea1f 100644
--- a/lib/internal/Magento/Framework/App/Response/Http.php
+++ b/lib/internal/Magento/Framework/App/Response/Http.php
@@ -11,42 +11,44 @@ use Magento\Framework\App\Http\Context;
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
 use Magento\Framework\Stdlib\CookieManagerInterface;
+use Magento\Framework\Stdlib\DateTime;
 
 class Http extends \Magento\Framework\HTTP\PhpEnvironment\Response
 {
-    /**
-     * Cookie to store page vary string
-     */
+    /** Cookie to store page vary string */
     const COOKIE_VARY_STRING = 'X-Magento-Vary';
 
-    /**
-     * @var \Magento\Framework\Stdlib\CookieManagerInterface
-     */
+    /** Format for expiration timestamp headers */
+    const EXPIRATION_TIMESTAMP_FORMAT = 'D, d M Y H:i:s T';
+
+    /** @var \Magento\Framework\Stdlib\CookieManagerInterface */
     protected $cookieManager;
 
-    /**
-     * @var \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory
-     */
+    /** @var \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory */
     protected $cookieMetadataFactory;
 
-    /**
-     * @var \Magento\Framework\App\Http\Context
-     */
+    /** @var \Magento\Framework\App\Http\Context */
     protected $context;
 
+    /** @var DateTime */
+    protected $dateTime;
+
     /**
      * @param CookieManagerInterface $cookieManager
      * @param CookieMetadataFactory $cookieMetadataFactory
      * @param Context $context
+     * @param DateTime $dateTime
      */
     public function __construct(
         CookieManagerInterface $cookieManager,
         CookieMetadataFactory $cookieMetadataFactory,
-        Context $context
+        Context $context,
+        DateTime $dateTime
     ) {
         $this->cookieManager = $cookieManager;
         $this->cookieMetadataFactory = $cookieMetadataFactory;
         $this->context = $context;
+        $this->dateTime = $dateTime;
     }
 
     /**
@@ -97,7 +99,7 @@ class Http extends \Magento\Framework\HTTP\PhpEnvironment\Response
         }
         $this->setHeader('pragma', 'cache', true);
         $this->setHeader('cache-control', 'public, max-age=' . $ttl . ', s-maxage=' . $ttl, true);
-        $this->setHeader('expires', gmdate('D, d M Y H:i:s T', strtotime('+' . $ttl . ' seconds')), true);
+        $this->setHeader('expires', $this->getExpirationHeader('+' . $ttl . ' seconds'), true);
     }
 
     /**
@@ -114,7 +116,7 @@ class Http extends \Magento\Framework\HTTP\PhpEnvironment\Response
         }
         $this->setHeader('pragma', 'cache', true);
         $this->setHeader('cache-control', 'private, max-age=' . $ttl, true);
-        $this->setHeader('expires', gmdate('D, d M Y H:i:s T', strtotime('+' . $ttl . ' seconds')), true);
+        $this->setHeader('expires', $this->getExpirationHeader('+' . $ttl . ' seconds'), true);
     }
 
     /**
@@ -126,7 +128,7 @@ class Http extends \Magento\Framework\HTTP\PhpEnvironment\Response
     {
         $this->setHeader('pragma', 'no-cache', true);
         $this->setHeader('cache-control', 'no-store, no-cache, must-revalidate, max-age=0', true);
-        $this->setHeader('expires', gmdate('D, d M Y H:i:s T', strtotime('-1 year')), true);
+        $this->setHeader('expires', $this->getExpirationHeader('-1 year'), true);
     }
 
     /**
@@ -160,4 +162,15 @@ class Http extends \Magento\Framework\HTTP\PhpEnvironment\Response
         $this->cookieManager = $objectManager->create('Magento\Framework\Stdlib\CookieManagerInterface');
         $this->cookieMetadataFactory = $objectManager->get('Magento\Framework\Stdlib\Cookie\CookieMetadataFactory');
     }
+
+    /**
+     * Given a time input, returns the formatted header
+     *
+     * @param string $time
+     * @return string
+     */
+    protected function getExpirationHeader($time)
+    {
+        return $this->dateTime->gmDate(self::EXPIRATION_TIMESTAMP_FORMAT, $this->dateTime->strToTime($time));
+    }
 }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Response/HttpTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Response/HttpTest.php
index 182e7cfe65fab07449a7794cd68e766f28a4dec1..3fb38007f0a56a0152d2caabd4e0f3109551e0dd 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Response/HttpTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Response/HttpTest.php
@@ -13,7 +13,7 @@ use \Magento\Framework\App\Response\Http;
 class HttpTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\App\Response\Http
+     * @var Http
      */
     protected $model;
 
@@ -32,6 +32,9 @@ class HttpTest extends \PHPUnit_Framework_TestCase
      */
     protected $contextMock;
 
+    /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\Http\Context */
+    protected $dateTimeMock;
+
     protected function setUp()
     {
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -41,12 +44,18 @@ class HttpTest extends \PHPUnit_Framework_TestCase
         $this->cookieManagerMock = $this->getMock('Magento\Framework\Stdlib\CookieManagerInterface');
         $this->contextMock = $this->getMockBuilder('Magento\Framework\App\Http\Context')->disableOriginalConstructor()
             ->getMock();
+
+        $this->dateTimeMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime')
+            ->disableOriginalConstructor()
+            ->getMock();
+
         $this->model = $objectManager->getObject(
             'Magento\Framework\App\Response\Http',
             [
                 'cookieManager' => $this->cookieManagerMock,
                 'cookieMetadataFactory' => $this->cookieMetadataFactoryMock,
-                'context' => $this->contextMock
+                'context' => $this->contextMock,
+                'dateTime' => $this->dateTimeMock
             ]
         );
         $this->model->headersSentThrowsException = false;
@@ -118,14 +127,24 @@ class HttpTest extends \PHPUnit_Framework_TestCase
     public function testSetPublicHeaders()
     {
         $ttl = 120;
+        $timestamp = 1000000;
         $pragma = 'cache';
         $cacheControl = 'max-age=' . $ttl . ', public, s-maxage=' . $ttl;
-        $expiresResult = gmdate('D, d M Y H:i:s T', time() + $ttl);
+        $expiresResult ='Thu, 01 Jan 1970 00:00:00 GMT';
+
+        $this->dateTimeMock->expects($this->once())
+            ->method('strToTime')
+            ->with('+' . $ttl . ' seconds')
+            ->willReturn($timestamp);
+        $this->dateTimeMock->expects($this->once())
+            ->method('gmDate')
+            ->with(Http::EXPIRATION_TIMESTAMP_FORMAT, $timestamp)
+            ->willReturn($expiresResult);
 
         $this->model->setPublicHeaders($ttl);
         $this->assertEquals($pragma, $this->model->getHeader('Pragma')->getFieldValue());
         $this->assertEquals($cacheControl, $this->model->getHeader('Cache-Control')->getFieldValue());
-        $this->assertLessThanOrEqual($expiresResult, $this->model->getHeader('Expires')->getFieldValue());
+        $this->assertSame($expiresResult, $this->model->getHeader('Expires')->getFieldValue());
     }
 
     /**
@@ -146,14 +165,24 @@ class HttpTest extends \PHPUnit_Framework_TestCase
     public function testSetPrivateHeaders()
     {
         $ttl = 120;
+        $timestamp = 1000000;
         $pragma = 'cache';
         $cacheControl = 'max-age=' . $ttl . ', private';
-        $expires = gmdate('D, d M Y H:i:s T', strtotime('+' . $ttl . ' seconds'));
+        $expiresResult ='Thu, 01 Jan 1970 00:00:00 GMT';
+
+        $this->dateTimeMock->expects($this->once())
+            ->method('strToTime')
+            ->with('+' . $ttl . ' seconds')
+            ->willReturn($timestamp);
+        $this->dateTimeMock->expects($this->once())
+            ->method('gmDate')
+            ->with(Http::EXPIRATION_TIMESTAMP_FORMAT, $timestamp)
+            ->willReturn($expiresResult);
 
         $this->model->setPrivateHeaders($ttl);
         $this->assertEquals($pragma, $this->model->getHeader('Pragma')->getFieldValue());
         $this->assertEquals($cacheControl, $this->model->getHeader('Cache-Control')->getFieldValue());
-        $this->assertEquals($expires, $this->model->getHeader('Expires')->getFieldValue());
+        $this->assertEquals($expiresResult, $this->model->getHeader('Expires')->getFieldValue());
     }
 
     /**
@@ -173,14 +202,24 @@ class HttpTest extends \PHPUnit_Framework_TestCase
      */
     public function testSetNoCacheHeaders()
     {
+        $timestamp = 1000000;
         $pragma = 'no-cache';
         $cacheControl = 'max-age=0, must-revalidate, no-cache, no-store';
-        $expires = gmdate('D, d M Y H:i:s T', strtotime('-1 year'));
+        $expiresResult ='Thu, 01 Jan 1970 00:00:00 GMT';
+
+        $this->dateTimeMock->expects($this->once())
+            ->method('strToTime')
+            ->with('-1 year')
+            ->willReturn($timestamp);
+        $this->dateTimeMock->expects($this->once())
+            ->method('gmDate')
+            ->with(Http::EXPIRATION_TIMESTAMP_FORMAT, $timestamp)
+            ->willReturn($expiresResult);
 
         $this->model->setNoCacheHeaders();
         $this->assertEquals($pragma, $this->model->getHeader('Pragma')->getFieldValue());
         $this->assertEquals($cacheControl, $this->model->getHeader('Cache-Control')->getFieldValue());
-        $this->assertEquals($expires, $this->model->getHeader('Expires')->getFieldValue());
+        $this->assertEquals($expiresResult, $this->model->getHeader('Expires')->getFieldValue());
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime.php
index fcb268be94313cd381145ff4821f2831a6fd70b4..1de1a555645bd34e09bfe7bb793ca444089fa6ec 100644
--- a/lib/internal/Magento/Framework/Stdlib/DateTime.php
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime.php
@@ -68,4 +68,31 @@ class DateTime
     {
         return preg_replace('#[ 0:-]#', '', $date) === '';
     }
+
+    /**
+     * Wrapper for native gmdate function
+     *
+     * @param string $format
+     * @param int $time
+     * @return string The given time in given format
+     *
+     * @codeCoverageIgnore
+     */
+    public function gmDate($format, $time)
+    {
+        return gmdate($format, $time);
+    }
+
+    /**
+     * Wrapper for native strtotime function
+     *
+     * @param string $timeStr
+     * @return int
+     *
+     * @codeCoverageIgnore
+     */
+    public function strToTime($timeStr)
+    {
+        return strtotime($timeStr);
+    }
 }
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php
index dc36a0755122edb792c32922c37ff1f8acddf4ee..312a40b1126400c1dd7582cbd0d7b138ad0098cc 100644
--- a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php
@@ -63,6 +63,8 @@ class DateTime
      * @param  string $format
      * @param  int|string $input date in current timezone
      * @return string
+     *
+     * @deprecated (MAGETWO-35555)
      */
     public function gmtDate($format = null, $input = null)
     {