diff --git a/core/modules/jsonapi/src/EventSubscriber/DefaultExceptionSubscriber.php b/core/modules/jsonapi/src/EventSubscriber/DefaultExceptionSubscriber.php index 5973b65fe9..b761d54931 100644 --- a/core/modules/jsonapi/src/EventSubscriber/DefaultExceptionSubscriber.php +++ b/core/modules/jsonapi/src/EventSubscriber/DefaultExceptionSubscriber.php @@ -59,8 +59,14 @@ public function onException(GetResponseForExceptionEvent $event) { protected function setEventResponse(GetResponseForExceptionEvent $event, $status) { /* @var \Symfony\Component\HttpKernel\Exception\HttpException $exception */ $exception = $event->getException(); - $response = new CacheableResourceResponse(new JsonApiDocumentTopLevel(new ErrorCollection([$exception]), new NullIncludedData(), new LinkCollection([])), $exception->getStatusCode(), $exception->getHeaders()); - $response->addCacheableDependency($exception); + $document = new JsonApiDocumentTopLevel(new ErrorCollection([$exception]), new NullIncludedData(), new LinkCollection([])); + if ($event->getRequest()->isMethodCacheable()) { + $response = new CacheableResourceResponse($document, $exception->getStatusCode(), $exception->getHeaders()); + $response->addCacheableDependency($exception); + } + else { + $response = new ResourceResponse($document, $exception->getStatusCode(), $exception->getHeaders()); + } $event->setResponse($response); }