diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index b65b71e..b9d5dcc 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -2523,7 +2523,9 @@ function template_preprocess_html(&$variables) {
   }
 
   // If on an individual node page, add the node type to body classes.
-  if ($node = menu_get_object()) {
+  $request = \Drupal::request();
+  if ($request->attributes->has('node')) {
+    $node = $request->attributes->get('node');
     $variables['attributes']['class'][] = drupal_html_class('node-type-' . $node->getType());
   }
 
@@ -2702,8 +2704,9 @@ function template_preprocess_page(&$variables) {
     );
   }
 
-  if ($node = menu_get_object()) {
-    $variables['node'] = $node;
+  $request = \Drupal::request();
+  if ($request->attributes->has('node')) {
+    $variables['node'] = $request->attributes->get('node');
   }
 
   // Populate the page template suggestions.
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index 282aa92..42bcde4 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -525,10 +525,14 @@ function book_node_view(EntityInterface $node, EntityDisplay $display, $view_mod
  * viewing a book page.
  */
 function book_page_alter(&$page) {
-  if (($node = menu_get_object()) && !empty($node->book['bid'])) {
-    $active_menus = menu_get_active_menu_names();
-    $active_menus[] = $node->book['menu_name'];
-    menu_set_active_menu_names($active_menus);
+  $request = \Drupal::request();
+  if ($request->attributes->has('node')) {
+    $node = $request->attributes->get('node');
+    if (!empty($node->book['bid'])) {
+      $active_menus = menu_get_active_menu_names();
+      $active_menus[] = $node->book['menu_name'];
+      menu_set_active_menu_names($active_menus);
+    }
   }
 }
 
diff --git a/core/modules/book/lib/Drupal/book/Plugin/Block/BookNavigationBlock.php b/core/modules/book/lib/Drupal/book/Plugin/Block/BookNavigationBlock.php
index d32ea7b..6c656a2 100644
--- a/core/modules/book/lib/Drupal/book/Plugin/Block/BookNavigationBlock.php
+++ b/core/modules/book/lib/Drupal/book/Plugin/Block/BookNavigationBlock.php
@@ -62,7 +62,9 @@ public function blockSubmit($form, &$form_state) {
    */
   public function build() {
     $current_bid = 0;
-    if ($node = menu_get_object()) {
+    $request = \Drupal::request();
+    if ($request->attributes->has('node')) {
+      $node = $request->attributes->get('node');
       $current_bid = empty($node->book['bid']) ? 0 : $node->book['bid'];
     }
     if ($this->configuration['block_mode'] == 'all pages') {
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index cf31cc4..d42c3bb 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -21,6 +21,7 @@
 use Drupal\entity\Entity\EntityDisplay;
 use Drupal\file\Entity\File;
 use Drupal\user\UserInterface;
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 
 /**
  * Denotes that the node is not published.
@@ -621,8 +622,12 @@ function node_show(EntityInterface $node, $message = FALSE) {
  *   The ID of the node if this is a full page view, otherwise FALSE.
  */
 function node_is_page(EntityInterface $node) {
-  $page_node = menu_get_object();
-  return (!empty($page_node) ? $page_node->id() == $node->id() : FALSE);
+  $request = \Drupal::request();
+  if ($request->attributes->has('node')) {
+    $page_node = $request->attributes->get('node');
+    return $page_node->id() == $node->id();
+  }
+  return FALSE;
 }
 
 /**
@@ -1295,26 +1300,24 @@ function node_block_access($block) {
       // @see node_form_block_form_alter()
       return;
     }
-    $node = menu_get_object();
-    $node_types = node_type_get_types();
-    if (arg(0) == 'node' && arg(1) == 'add' && arg(2)) {
-      $node_add_arg = strtr(arg(2), '-', '_');
-    }
 
     // For blocks with node types associated, if the node type does not match
     // the settings from this block, deny access to it.
-    if (!empty($node)) {
-      // This is a node or node edit page.
+    $request = \Drupal::request();
+    if ($request->attributes->has('node')) {
+      // Page has node.
+      $node = $request->attributes->get('node');
       return in_array($node->bundle(), $allowed_types);
     }
-    elseif (isset($node_add_arg) && isset($node_types[$node_add_arg])) {
-      // This is a node creation page
-      return in_array($node_add_arg, $allowed_types);
-    }
-    else {
-      // This page does not match the $allowed_types so deny access.
-      return FALSE;
+    // This is a node creation page.
+    // $request->attributes->has('node_type') would also match administration
+    // configuration pages, which the previous URI path options did not.
+    if ($request->attributes->get(RouteObjectInterface::ROUTE_NAME) == 'node.add') {
+      $node_type = $request->attributes->get('node_type');
+      return in_array($node_type->id(), $allowed_types);
     }
+
+    return FALSE;
   }
 }
 
