diff --git a/Classes/Http/ResourcePusher.php b/Classes/Http/ResourcePusher.php index 5217cb5..4c59910 100644 --- a/Classes/Http/ResourcePusher.php +++ b/Classes/Http/ResourcePusher.php @@ -43,7 +43,12 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface /** @var CacheDataCollector $cacheDataCollector */ $cacheDataCollector = $request->getAttribute('frontend.cache.collector'); - $identifier = $cacheDataCollector->getPageCacheIdentifier(); + try { + $identifier = $cacheDataCollector->getPageCacheIdentifier(); + } catch (\LogicException) { + // this happens on hidden pages (and ends anyway in a 404 Response) + return $response; + } $resources = []; if ($this->cache->has($identifier)) { $resources = $this->cache->get($identifier); diff --git a/Tests/Functional/Fixtures/HiddenPage.csv b/Tests/Functional/Fixtures/HiddenPage.csv new file mode 100644 index 0000000..8ecbc5c --- /dev/null +++ b/Tests/Functional/Fixtures/HiddenPage.csv @@ -0,0 +1,9 @@ +"pages" +,"uid","pid","title","slug","hidden" +,1,0,"root","/",1 +"sys_template" +,"uid","pid","root","config" +,1,1,1,"page = PAGE +page.10 = TEXT +page.includeJS.dummy-js = EXT:frontend/Resources/Public/JavaScript/default_frontend.js +" diff --git a/Tests/Functional/ResponseTest.php b/Tests/Functional/ResponseTest.php index e878870..6dbb56b 100644 --- a/Tests/Functional/ResponseTest.php +++ b/Tests/Functional/ResponseTest.php @@ -37,4 +37,14 @@ public function linkHeaderExists(): void self::assertStringContainsString('JavaScript/default_frontend.js', $link); self::assertStringContainsString('>; rel=preload; as=script', $link); } + + #[Test] + public function return404ResponseForHiddenPage(): void + { + $this->importCSVDataSet(__DIR__ . '/Fixtures/HiddenPage.csv'); + $request = new InternalRequest('http://localhost/'); + $request = $request->withServerParams(['HTTPS' => 'on']); + $response = $this->executeFrontendSubRequest($request); + self::assertSame(404, $response->getStatusCode()); + } }