Chris@0: routeProvider = $route_provider; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tries to handle the options request. Chris@0: * Chris@0: * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event Chris@0: * The request event. Chris@0: */ Chris@0: public function onRequest(GetResponseEvent $event) { Chris@0: if ($event->getRequest()->isMethod('OPTIONS')) { Chris@0: $routes = $this->routeProvider->getRouteCollectionForRequest($event->getRequest()); Chris@0: // In case we don't have any routes, a 403 should be thrown by the normal Chris@0: // request handling. Chris@0: if (count($routes) > 0) { Chris@0: // Flatten and unique the available methods. Chris@17: $methods = array_reduce($routes->all(), function ($methods, Route $route) { Chris@17: return array_merge($methods, $route->getMethods()); Chris@17: }, []); Chris@17: $methods = array_unique($methods); Chris@0: $response = new Response('', 200, ['Allow' => implode(', ', $methods)]); Chris@0: $event->setResponse($response); Chris@0: } Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function getSubscribedEvents() { Chris@0: // Set a high priority so it is executed before routing. Chris@0: $events[KernelEvents::REQUEST][] = ['onRequest', 1000]; Chris@0: return $events; Chris@0: } Chris@0: Chris@0: }