diff --git a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php index 4493612..67ae505 100644 --- a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php @@ -177,18 +177,22 @@ public function onRespond(FilterResponseEvent $event) { */ protected function updateDrupalCacheHeaders(Response $response, array $cache_tags = [], array $cache_contexts = []) { // X-Drupal-Cache-Tags - if ($response->headers->has('X-Drupal-Cache-Tags')) { - $existing_cache_tags = explode(' ', $response->headers->get('X-Drupal-Cache-Tags')); - $cache_tags = Cache::mergeTags($existing_cache_tags, $cache_tags); + if ($cache_tags) { + if ($response->headers->has('X-Drupal-Cache-Tags')) { + $existing_cache_tags = explode(' ', $response->headers->get('X-Drupal-Cache-Tags')); + $cache_tags = Cache::mergeTags($existing_cache_tags, $cache_tags); + } + $response->headers->set('X-Drupal-Cache-Tags', implode(' ', $cache_tags)); } - $response->headers->set('X-Drupal-Cache-Tags', implode(' ', $cache_tags)); // X-Drupal-Cache-Contexts - if ($response->headers->has('X-Drupal-Cache-Contexts')) { - $existing_cache_contexts = explode(' ', $response->headers->get('X-Drupal-Cache-Contexts')); - $cache_contexts = Cache::mergeContexts($existing_cache_contexts, $cache_contexts); + if ($cache_contexts) { + if ($response->headers->has('X-Drupal-Cache-Contexts')) { + $existing_cache_contexts = explode(' ', $response->headers->get('X-Drupal-Cache-Contexts')); + $cache_contexts = Cache::mergeContexts($existing_cache_contexts, $cache_contexts); + } + $response->headers->set('X-Drupal-Cache-Contexts', implode(' ', $this->cacheContexts->optimizeTokens($cache_contexts))); } - $response->headers->set('X-Drupal-Cache-Contexts', implode(' ', $this->cacheContexts->optimizeTokens($cache_contexts))); } /** diff --git a/core/modules/system/src/Tests/Routing/RouterTest.php b/core/modules/system/src/Tests/Routing/RouterTest.php index e0a4f34..b567f28 100644 --- a/core/modules/system/src/Tests/Routing/RouterTest.php +++ b/core/modules/system/src/Tests/Routing/RouterTest.php @@ -71,13 +71,13 @@ public function testFinishResponseSubscriber() { // 3. controller result: Response object, globally cacheable route access. $this->drupalGet('router_test/test1'); $headers = $this->drupalGetHeaders(); - $this->assertEqual($headers['x-drupal-cache-contexts'], ''); - $this->assertEqual($headers['x-drupal-cache-tags'], ''); + $this->assertTrue(!isset($headers['x-drupal-cache-contexts'])); + $this->assertTrue(!isset($headers['x-drupal-cache-tags'])); // 4. controller result: Response object, per-role cacheable route access. $this->drupalGet('router_test/test20'); $headers = $this->drupalGetHeaders(); $this->assertEqual($headers['x-drupal-cache-contexts'], 'user.roles'); - $this->assertEqual($headers['x-drupal-cache-tags'], ''); + $this->assertTrue(!isset($headers['x-drupal-cache-tags'])); } /**