diff --git a/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php b/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php new file mode 100644 index 0000000..da4fa32 --- /dev/null +++ b/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php @@ -0,0 +1,44 @@ +getRequest(); + $result = $event->getControllerResult(); + + // If this is a render array then we assume that the router went with the + // generic controller and not one with a format. If the format requested is + // not HTML though we can also assume that the requested format is invalid + // so we provide a 406 response. + if (is_array($result) && $request->getRequestFormat() !== 'html') { + throw new NotAcceptableHttpException('Not acceptable'); + } + } + + /** + * {@inheritdoc} + */ + static function getSubscribedEvents() { + $events[KernelEvents::VIEW][] = ['onViewDetect406', -10]; + + return $events; + } + +}