diff --git a/core/lib/Drupal/Core/EventSubscriber/RedirectResponseSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/RedirectResponseSubscriber.php index f2bf4d7..df2b1be 100644 --- a/core/lib/Drupal/Core/EventSubscriber/RedirectResponseSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/RedirectResponseSubscriber.php @@ -51,7 +51,7 @@ class RedirectResponseSubscriber implements EventSubscriberInterface { */ public function checkRedirectUrl(ResponseEvent $event) { $response = $event->getResponse(); - if ($response instanceof RedirectResponse) { + if ($response instanceof RedirectResponse && !($response instanceof SecuredRedirectResponse)) { $request = $event->getRequest(); // Let the 'destination' query parameter override the redirect target. diff --git a/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php index f904bc5..eea34f4 100644 --- a/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php @@ -9,6 +9,7 @@ use Drupal\Core\Render\AttachmentsInterface; use Drupal\Core\Render\BubbleableMetadata; use Drupal\Core\Render\RenderContext; use Drupal\Core\Render\RendererInterface; +use Drupal\Component\HttpFoundation\SecuredRedirectResponse; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface; use Symfony\Component\HttpKernel\Event\ControllerEvent; @@ -146,6 +147,9 @@ class EarlyRenderingControllerWrapperSubscriber implements EventSubscriberInterf $response->addCacheableDependency($early_rendering_bubbleable_metadata); } } + elseif ($response instanceof SecuredRedirectResponse) { + // Do nothing. That does not care. See below. + } // If a non-Ajax Response or domain object is returned and it cares about // attachments or cacheability, then throw an exception: early rendering // is not permitted in that case. It is the developer's responsibility