src/EventSubscriber/ResponseCacheControlSubscriber.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. class ResponseCacheControlSubscriber implements EventSubscriberInterface
  7. {
  8.     public static function getSubscribedEvents(): array
  9.     {
  10.         return [
  11.             KernelEvents::RESPONSE => ['onKernelResponse', -10],
  12.         ];
  13.     }
  14.     public function onKernelResponse(ResponseEvent $event): void
  15.     {
  16.         if (!$event->isMainRequest()) {
  17.             return;
  18.         }
  19.         $response $event->getResponse();
  20.         $statusCode $response->getStatusCode();
  21.         // Apply no-store cache control for sensitive error responses
  22.         if ($statusCode === 401 || $statusCode === 403 || $statusCode === 404) {
  23.             $response->headers->set('Cache-Control''no-store, no-cache, must-revalidate, private');
  24.             $response->headers->set('Pragma''no-cache');
  25.             $response->headers->set('Expires''0');
  26.         }
  27.     }
  28. }