summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Pott2014-07-07 15:33:35 (GMT)
committerAlex Pott2014-07-07 15:33:35 (GMT)
commit5dd3776909d7439e09e80fb890ac5e03b0b1e67c (patch)
tree497c3fe13a7dcb271c8a30b3df39f5ca449f019c
parentddaba8bf70ed2e233de51a9c08e9485e4c6553e8 (diff)
Issue #1918820 by neclimdul, typhonius, pwolanin | 0x534B41: Fixed HTTP header date formats.
-rw-r--r--core/includes/bootstrap.inc3
-rw-r--r--core/lib/Drupal/Component/Datetime/DateTimePlus.php9
-rw-r--r--core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php3
-rw-r--r--core/modules/aggregator/src/Plugin/aggregator/fetcher/DefaultFetcher.php3
-rw-r--r--core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php3
-rw-r--r--core/modules/system/src/Tests/Bootstrap/PageCacheTest.php3
-rw-r--r--core/modules/toolbar/toolbar.module6
7 files changed, 22 insertions, 8 deletions
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 8d09898..055301c 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -4,6 +4,7 @@
* Functions that need to be loaded on every Drupal request.
*/
+use Drupal\Component\Datetime\DateTimePlus;
use Drupal\Component\Utility\Crypt;
use Drupal\Component\Utility\Environment;
use Drupal\Component\Utility\String;
@@ -572,7 +573,7 @@ function drupal_page_header() {
$default_headers = array(
'Expires' => 'Sun, 19 Nov 1978 05:00:00 GMT',
- 'Last-Modified' => gmdate(DATE_RFC1123, REQUEST_TIME),
+ 'Last-Modified' => gmdate(DateTimePlus::RFC7231, REQUEST_TIME),
'Cache-Control' => 'no-cache, must-revalidate, post-check=0, pre-check=0',
'ETag' => '"' . REQUEST_TIME . '"',
);
diff --git a/core/lib/Drupal/Component/Datetime/DateTimePlus.php b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
index 4c4122c..fedab23 100644
--- a/core/lib/Drupal/Component/Datetime/DateTimePlus.php
+++ b/core/lib/Drupal/Component/Datetime/DateTimePlus.php
@@ -31,6 +31,15 @@ class DateTimePlus extends \DateTime {
const FORMAT = 'Y-m-d H:i:s';
/**
+ * A RFC7231 Compliant date.
+ *
+ * http://tools.ietf.org/html/rfc7231#section-7.1.1.1
+ *
+ * Example: Sun, 06 Nov 1994 08:49:37 GMT
+ */
+ const RFC7231 = 'D, d M Y H:i:s \G\M\T';
+
+ /**
* An array of possible date parts.
*/
protected static $dateParts = array(
diff --git a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php
index 7a98950..eb39600 100644
--- a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php
@@ -7,6 +7,7 @@
namespace Drupal\Core\EventSubscriber;
+use Drupal\Component\Datetime\DateTimePlus;
use Drupal\Core\Config\Config;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Language\LanguageManager;
@@ -179,7 +180,7 @@ class FinishResponseSubscriber implements EventSubscriberInterface {
// Last-Modified and an ETag header on the response.
if (!$response->headers->has('Last-Modified')) {
$timestamp = REQUEST_TIME;
- $response->setLastModified(new \DateTime(gmdate(DATE_RFC1123, REQUEST_TIME)));
+ $response->setLastModified(new \DateTime(gmdate(DateTimePlus::RFC7231, REQUEST_TIME)));
}
else {
$timestamp = $response->getLastModified()->getTimestamp();
diff --git a/core/modules/aggregator/src/Plugin/aggregator/fetcher/DefaultFetcher.php b/core/modules/aggregator/src/Plugin/aggregator/fetcher/DefaultFetcher.php
index ff2f1a3..ce36696 100644
--- a/core/modules/aggregator/src/Plugin/aggregator/fetcher/DefaultFetcher.php
+++ b/core/modules/aggregator/src/Plugin/aggregator/fetcher/DefaultFetcher.php
@@ -9,6 +9,7 @@ namespace Drupal\aggregator\Plugin\aggregator\fetcher;
use Drupal\aggregator\Plugin\FetcherInterface;
use Drupal\aggregator\FeedInterface;
+use Drupal\Component\Datetime\DateTimePlus;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use GuzzleHttp\ClientInterface;
use GuzzleHttp\Exception\RequestException;
@@ -65,7 +66,7 @@ class DefaultFetcher implements FetcherInterface, ContainerFactoryPluginInterfac
$request->addHeader('If-None-Match', $feed->getEtag());
}
if ($feed->getLastModified()) {
- $request->addHeader('If-Modified-Since', gmdate(DATE_RFC1123, $feed->getLastModified()));
+ $request->addHeader('If-Modified-Since', gmdate(DateTimePlus::RFC7231, $feed->getLastModified()));
}
try {
diff --git a/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php b/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php
index 28d024b..067d669 100644
--- a/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php
+++ b/core/modules/aggregator/tests/modules/aggregator_test/src/Controller/AggregatorTestRssController.php
@@ -6,6 +6,7 @@
namespace Drupal\aggregator_test\Controller;
+use Drupal\Component\Datetime\DateTimePlus;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Component\Utility\Crypt;
use Symfony\Component\HttpFoundation\Response;
@@ -41,7 +42,7 @@ class AggregatorTestRssController extends ControllerBase {
// Send appropriate response. We respond with a 304 not modified on either
// etag or on last modified.
if ($use_last_modified) {
- $response->headers->set('Last-Modified', gmdate(DATE_RFC1123, $last_modified));
+ $response->headers->set('Last-Modified', gmdate(DateTimePlus::RFC7231, $last_modified));
}
if ($use_etag) {
$response->headers->set('ETag', $etag);
diff --git a/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php b/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php
index f487a1e..55f7d1a 100644
--- a/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php
+++ b/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php
@@ -7,6 +7,7 @@
namespace Drupal\system\Tests\Bootstrap;
+use Drupal\Component\Datetime\DateTimePlus;
use Symfony\Component\Routing\RequestContext;
use Drupal\simpletest\WebTestBase;
use Drupal\Core\Cache\Cache;
@@ -141,7 +142,7 @@ class PageCacheTest extends WebTestBase {
$this->assertResponse(200, 'Conditional request without If-None-Match returned 200 OK.');
$this->assertEqual($this->drupalGetHeader('X-Drupal-Cache'), 'HIT', 'Page was cached.');
- $this->drupalGet('', array(), array('If-Modified-Since: ' . gmdate(DATE_RFC1123, strtotime($last_modified) + 1), 'If-None-Match: ' . $etag));
+ $this->drupalGet('', array(), array('If-Modified-Since: ' . gmdate(DateTimePlus::RFC7231, strtotime($last_modified) + 1), 'If-None-Match: ' . $etag));
$this->assertResponse(200, 'Conditional request with new a If-Modified-Since date newer than Last-Modified returned 200 OK.');
$this->assertEqual($this->drupalGetHeader('X-Drupal-Cache'), 'HIT', 'Page was cached.');
diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module
index f427f84..a8b4f08 100644
--- a/core/modules/toolbar/toolbar.module
+++ b/core/modules/toolbar/toolbar.module
@@ -5,13 +5,13 @@
* Administration toolbar for quick access to top level administration items.
*/
-use Drupal\Component\Utility\String;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Render\Element;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Template\Attribute;
+use Drupal\Component\Datetime\DateTimePlus;
use Drupal\Component\Utility\Crypt;
-use Symfony\Component\HttpFoundation\Response;
+use Drupal\Component\Utility\String;
use Drupal\menu_link\MenuLinkInterface;
use Drupal\user\RoleInterface;
use Drupal\user\UserInterface;
@@ -139,7 +139,7 @@ function _toolbar_initialize_page_cache() {
// accesses the callback URL again (e.g., after clearing the browser cache or
// when force-reloading a Drupal page).
$max_age = 3600 * 24 * 365;
- drupal_add_http_header('Expires', gmdate(DATE_RFC1123, REQUEST_TIME + $max_age));
+ drupal_add_http_header('Expires', gmdate(DateTimePlus::RFC7231, REQUEST_TIME + $max_age));
drupal_add_http_header('Cache-Control', 'private, max-age=' . $max_age);
}