src/Listener/PreflightListener.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Listener;
  3. use Symfony\Component\HttpKernel\Event\RequestEvent;
  4. use Symfony\Component\HttpFoundation\Response;
  5. class PreflightListener
  6. {
  7.     public function onKernelRequest(RequestEvent $event): void
  8.     {
  9.         $request $event->getRequest();
  10.         if ($request->getMethod() !== 'OPTIONS' || !preg_match('#^/api/#'$request->getPathInfo())) {
  11.             return;
  12.         }
  13.         $origin $request->headers->get('Origin');
  14.         if ($origin && preg_match('#^https?://(nomadcloud\.fr|opteamup\.fr|localhost|127\.0\.0\.1)(:[0-9]+)?$#'$origin)) {
  15.             $response = new Response();
  16.             $response->headers->set('Access-Control-Allow-Origin'$origin);
  17.             $response->headers->set('Access-Control-Allow-Methods''GET, POST, PUT, PATCH, DELETE, OPTIONS');
  18.             $response->headers->set('Access-Control-Allow-Headers''Content-Type, Authorization, X-Server-Host');
  19.             $response->headers->set('Access-Control-Allow-Credentials''true');
  20.             $event->setResponse($response);
  21.         }
  22.     }
  23. }