vendor/shopware/core/Framework/Api/EventListener/CorsListener.php line 41

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\Api\EventListener;
  3. use Shopware\Core\Framework\Log\Package;
  4. use Shopware\Core\PlatformRequest;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. /**
  11.  * @deprecated tag:v6.5.0 - reason:becomes-internal - EventSubscribers will become internal in v6.5.0
  12.  */
  13. #[Package('core')]
  14. class CorsListener implements EventSubscriberInterface
  15. {
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return [
  19.             KernelEvents::REQUEST => ['onKernelRequest'9999],
  20.             KernelEvents::RESPONSE => ['onKernelResponse'9999],
  21.         ];
  22.     }
  23.     public function onKernelRequest(RequestEvent $event): void
  24.     {
  25.         if (!$event->isMainRequest()) {
  26.             return;
  27.         }
  28.         $method $event->getRequest()->getRealMethod();
  29.         if ($method === 'OPTIONS') {
  30.             $response = new Response();
  31.             $event->setResponse($response);
  32.         }
  33.     }
  34.     public function onKernelResponse(ResponseEvent $event): void
  35.     {
  36.         if (!$event->isMainRequest()) {
  37.             return;
  38.         }
  39.         $corsHeaders = [
  40.             'Content-Type',
  41.             'Authorization',
  42.             PlatformRequest::HEADER_CONTEXT_TOKEN,
  43.             PlatformRequest::HEADER_ACCESS_KEY,
  44.             PlatformRequest::HEADER_LANGUAGE_ID,
  45.             PlatformRequest::HEADER_VERSION_ID,
  46.             PlatformRequest::HEADER_INHERITANCE,
  47.             PlatformRequest::HEADER_FAIL_ON_ERROR,
  48.             PlatformRequest::HEADER_INDEXING_BEHAVIOR,
  49.             PlatformRequest::HEADER_SINGLE_OPERATION,
  50.             PlatformRequest::HEADER_INCLUDE_SEO_URLS,
  51.         ];
  52.         $response $event->getResponse();
  53.         $response->headers->set('Access-Control-Allow-Origin''*');
  54.         $response->headers->set('Access-Control-Allow-Methods''GET,POST,PUT,PATCH,DELETE');
  55.         $response->headers->set('Access-Control-Allow-Headers'implode(','$corsHeaders));
  56.         $response->headers->set('Access-Control-Expose-Headers'implode(','$corsHeaders));
  57.     }
  58. }