diff --git a/core/lib/Drupal/Core/Path/PathValidator.php b/core/lib/Drupal/Core/Path/PathValidator.php
index f7efdb1..41a06c1 100644
--- a/core/lib/Drupal/Core/Path/PathValidator.php
+++ b/core/lib/Drupal/Core/Path/PathValidator.php
@@ -6,6 +6,7 @@
 use Drupal\Core\ParamConverter\ParamNotConvertedException;
 use Drupal\Core\PathProcessor\InboundPathProcessorInterface;
 use Drupal\Core\Routing\AccessAwareRouterInterface;
+use Drupal\Core\Routing\RequestContext;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Url;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
@@ -152,23 +153,30 @@ protected function getPathAttributes($path, Request $request, $access_check) {
       $router = $this->accessAwareRouter;
     }
 
+    $request_context = $router->getContext() ? $router->getContext() : new RequestContext();
     $path = $this->pathProcessor->processInbound('/' . $path, $request);
 
     try {
-      return $router->match($path);
+      $context = new RequestContext();
+      $context->fromRequest($request);
+      $router->setContext($context);
+      $result = $router->match($path);
     }
     catch (ResourceNotFoundException $e) {
-      return FALSE;
+      $result = FALSE;
     }
     catch (ParamNotConvertedException $e) {
-      return FALSE;
+      $result = FALSE;
     }
     catch (AccessDeniedHttpException $e) {
-      return FALSE;
+      $result = FALSE;
     }
     catch (MethodNotAllowedException $e) {
-      return FALSE;
+      $result = FALSE;
     }
+
+    $router->setContext($request_context);
+    return $result;
   }
 
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Path/PathValidatorTest.php b/core/tests/Drupal/KernelTests/Core/Path/PathValidatorTest.php
new file mode 100644
index 0000000..a3cd7ea
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Path/PathValidatorTest.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\KernelTests\Core\Path\PathValidatorTest.
+ */
+
+namespace Drupal\KernelTests\Core\Path;
+
+use Drupal\Core\Url;
+use Drupal\entity_test\Entity\EntityTest;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\user\Entity\User;
+
+/**
+ * Tests the path validator.
+ *
+ * @group Path
+ *
+ * @see \Drupal\Core\Path\PathValidator
+ */
+class PathValidatorTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['path', 'entity_test', 'user'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('entity_test');
+  }
+
+  public function testGetUrlIfValidWithoutAccessCheck() {
+    $requestContext = \Drupal::service('router.request_context');
+    $pathValidator = \Drupal::service('path.validator');
+
+    $entity = EntityTest::create([
+      'name' => 'test',
+    ]);
+    $entity->save();
+
+    $methods = [
+      'POST',
+      'GET',
+      'PUT',
+      'PATCH',
+      'DELETE',
+      NULL, // used in cli context
+    ];
+    foreach ($methods as $method) {
+      $requestContext->setMethod($method);
+      /** @var Url $url */
+      $url = $pathValidator->getUrlIfValidWithoutAccessCheck($entity->toUrl()->toString());
+      $this->assertEquals($method, $requestContext->getMethod());
+      $this->assertInstanceOf(Url::class, $url);
+      $this->assertSame($url->getRouteParameters(), ['entity_test' => $entity->id()]);
+    }
+  }
+
+}
