diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
index 6c3332d01134e1a0fa3a168b2b2100056e0ba6a2..178163cb112c9967c842087cad5cd9bb204bf14c 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
@@ -714,10 +714,7 @@ class ShortcutToolbarItem implements ToolbarItemInterface
             }
         }
 
-        if ($queryBuilder->execute() === 1) {
-            return new HtmlResponse($shortcutName);
-        }
-        return new HtmlResponse('failed');
+        return new HtmlResponse($queryBuilder->execute() === 1 ? $shortcutName : 'failed');
     }
 
     /**
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
index c4eed8bef7630524abefcd09c56e8bca873c15c6..3669eb8f76791aa016e277cfb9884f4c05157d12 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
@@ -415,8 +415,7 @@ class SystemInformationToolbarItem implements ToolbarItemInterface
     protected function getSignalSlotDispatcher()
     {
         if (!isset($this->signalSlotDispatcher)) {
-            $this->signalSlotDispatcher = GeneralUtility::makeInstance(ObjectManager::class)
-                ->get(Dispatcher::class);
+            $this->signalSlotDispatcher = GeneralUtility::makeInstance(ObjectManager::class)->get(Dispatcher::class);
         }
         return $this->signalSlotDispatcher;
     }
diff --git a/typo3/sysext/backend/Classes/Controller/ContextHelpAjaxController.php b/typo3/sysext/backend/Classes/Controller/ContextHelpAjaxController.php
index e1af5cdf5007a1e6d512f64e75fd0ab950cb2fe7..5114c7ae29da2681faed1ee6c3ef95435c5a98b0 100644
--- a/typo3/sysext/backend/Classes/Controller/ContextHelpAjaxController.php
+++ b/typo3/sysext/backend/Classes/Controller/ContextHelpAjaxController.php
@@ -37,7 +37,7 @@ class ContextHelpAjaxController
     public function getHelpAction(ServerRequestInterface $request): ResponseInterface
     {
         $params = $request->getParsedBody()['params'] ?? $request->getQueryParams()['params'];
-        if ($params['action'] !== 'getContextHelp') {
+        if (($params['action'] ?? '') !== 'getContextHelp') {
             throw new \RuntimeException('Action must be set to "getContextHelp"', 1518787887);
         }
         $result = $this->getContextHelp($params['table'], $params['field']);
diff --git a/typo3/sysext/backend/Classes/Controller/File/FileController.php b/typo3/sysext/backend/Classes/Controller/File/FileController.php
index 372ff42389088de80b70459672b4070e2cefc3b4..d62f3d1926ab3b6d14fd3d64c6622bd3453d96ce 100644
--- a/typo3/sysext/backend/Classes/Controller/File/FileController.php
+++ b/typo3/sysext/backend/Classes/Controller/File/FileController.php
@@ -176,7 +176,7 @@ class FileController
         BackendUtility::setUpdateSignal('updateFolderTree');
 
         // go and edit the new created file
-        if ($request->getParsedBody()['edit']) {
+        if ($request->getParsedBody()['edit'] ?? '') {
             /** @var \TYPO3\CMS\Core\Resource\File $file */
             $file = $this->fileData['newfile'][0];
             $properties = $file->getProperties();
diff --git a/typo3/sysext/backend/Classes/Controller/FileSystemNavigationFrameController.php b/typo3/sysext/backend/Classes/Controller/FileSystemNavigationFrameController.php
index 785fee5fc2cfc65dc5e8de9a13f6a00ccd67b703..905dad7781d4a42fa1fbb594a70e1b104fa48409 100644
--- a/typo3/sysext/backend/Classes/Controller/FileSystemNavigationFrameController.php
+++ b/typo3/sysext/backend/Classes/Controller/FileSystemNavigationFrameController.php
@@ -231,7 +231,7 @@ class FileSystemNavigationFrameController
         $this->init();
         $tree = $this->foldertree->getBrowsableTree();
         if ($this->foldertree->getAjaxStatus() === false) {
-            return new HtmlResponse('', 500);
+            return new JsonResponse(null, 500);
         }
         return new JsonResponse([$tree]);
     }
diff --git a/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php b/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php
index a61cd120da69cb01dc553ab567b6e2ec044ad990..02a6421b4c922592c9cf1aae191b24951c018e99 100644
--- a/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php
+++ b/typo3/sysext/backend/Classes/Controller/OnlineMediaController.php
@@ -16,7 +16,6 @@ namespace TYPO3\CMS\Backend\Controller;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Http\HtmlResponse;
 use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Http\RedirectResponse;
 use TYPO3\CMS\Core\Localization\LanguageService;
@@ -53,7 +52,7 @@ class OnlineMediaController
             }
             return new JsonResponse($data);
         }
-        return new HtmlResponse('');
+        return new JsonResponse();
     }
 
     /**
diff --git a/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php b/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
index 8650faaadd33f58579a938634afa19b2e56325aa..bc86f0a615a7c919eaf7fb23b55fd3abec6cb935 100644
--- a/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
+++ b/typo3/sysext/backend/Classes/Controller/Page/LocalizationController.php
@@ -20,7 +20,6 @@ use TYPO3\CMS\Backend\Configuration\TranslationConfigurationProvider;
 use TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\DataHandling\DataHandler;
-use TYPO3\CMS\Core\Http\HtmlResponse;
 use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
@@ -71,7 +70,7 @@ class LocalizationController
     {
         $params = $request->getQueryParams();
         if (!isset($params['pageId'], $params['colPos'], $params['languageId'])) {
-            return new HtmlResponse('', 400);
+            return new JsonResponse(null, 400);
         }
 
         $pageId = (int)$params['pageId'];
@@ -123,7 +122,7 @@ class LocalizationController
     {
         $params = $request->getQueryParams();
         if (!isset($params['pageId'], $params['colPos'], $params['destLanguageId'], $params['languageId'])) {
-            return new HtmlResponse('', 400);
+            return new JsonResponse(null, 400);
         }
 
         $records = [];
@@ -158,11 +157,13 @@ class LocalizationController
     {
         $params = $request->getQueryParams();
         if (!isset($params['pageId'], $params['srcLanguageId'], $params['destLanguageId'], $params['action'], $params['uidList'])) {
-            return new HtmlResponse('', 400);
+            return new JsonResponse(null, 400);
         }
 
         if ($params['action'] !== static::ACTION_COPY && $params['action'] !== static::ACTION_LOCALIZE) {
-            return new HtmlResponse('Invalid action "' . $params['action'] . '" called.', 400);
+            $response = new Response('php://temp', 400, ['Content-Type' => 'application/json; charset=utf-8']);
+            $response->getBody()->write('Invalid action "' . $params['action'] . '" called.');
+            return $response;
         }
 
         // Filter transmitted but invalid uids
diff --git a/typo3/sysext/backend/Classes/Form/Wizard/ImageManipulationWizard.php b/typo3/sysext/backend/Classes/Form/Wizard/ImageManipulationWizard.php
index 69ce4d190b8072ca92a8f3bf04edf456e082b20c..f4637fa68a1e5720ebb97e7ff345c7b34e063aca 100644
--- a/typo3/sysext/backend/Classes/Form/Wizard/ImageManipulationWizard.php
+++ b/typo3/sysext/backend/Classes/Form/Wizard/ImageManipulationWizard.php
@@ -17,7 +17,7 @@ namespace TYPO3\CMS\Backend\Form\Wizard;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Http\HtmlResponse;
+use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -71,9 +71,9 @@ class ImageManipulationWizard
                 'cropVariants' => $queryParams['cropVariants']
             ];
             $content = $this->templateView->renderSection('Main', $viewData);
-            return new HtmlResponse($content);
+            return new JsonResponse($content);
         }
-        return new HtmlResponse('', 403);
+        return new JsonResponse(null, 403);
     }
 
     /**
diff --git a/typo3/sysext/core/Classes/Controller/FileDumpController.php b/typo3/sysext/core/Classes/Controller/FileDumpController.php
index f80f97c480f329d21ca9cfc8fe98d9589089e64e..cb60a1984a17a2cb277d5d197e927fff16ab0ea7 100644
--- a/typo3/sysext/core/Classes/Controller/FileDumpController.php
+++ b/typo3/sysext/core/Classes/Controller/FileDumpController.php
@@ -16,7 +16,7 @@ namespace TYPO3\CMS\Core\Controller;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Http\HtmlResponse;
+use TYPO3\CMS\Core\Http\Response;
 use TYPO3\CMS\Core\Resource\Hook\FileDumpEIDHookInterface;
 use TYPO3\CMS\Core\Resource\ProcessedFileRepository;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
@@ -88,7 +88,7 @@ class FileDumpController
             // @todo Refactor FAL to not echo directly, but to implement a stream for output here and use response
             return null;
         }
-        return new HtmlResponse('', 403);
+        return (new Response)->withStatus(403);
     }
 
     /**
diff --git a/typo3/sysext/frontend/Classes/Controller/ShowImageController.php b/typo3/sysext/frontend/Classes/Controller/ShowImageController.php
index 370988af5025359e9e426f4258464f84a009388e..143f286c52c3739d23deb35c572727a022c1b79a 100644
--- a/typo3/sysext/frontend/Classes/Controller/ShowImageController.php
+++ b/typo3/sysext/frontend/Classes/Controller/ShowImageController.php
@@ -17,7 +17,7 @@ namespace TYPO3\CMS\Frontend\Controller;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use TYPO3\CMS\Core\Exception;
-use TYPO3\CMS\Core\Http\HtmlResponse;
+use TYPO3\CMS\Core\Http\Response;
 use TYPO3\CMS\Core\Resource\ProcessedFile;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -200,12 +200,14 @@ EOF;
         try {
             $this->initialize();
             $this->main();
-            return new HtmlResponse($this->content);
+            $response = new Response();
+            $response->getBody()->write($this->content);
+            return $response;
         } catch (\InvalidArgumentException $e) {
             // add a 410 "gone" if invalid parameters given
-            return new HtmlResponse('', 410);
+            return (new Response)->withStatus(410);
         } catch (Exception $e) {
-            return new HtmlResponse('', 404);
+            return (new Response)->withStatus(404);
         }
     }
 }
diff --git a/typo3/sysext/rsaauth/Classes/Controller/RsaPublicKeyGenerationController.php b/typo3/sysext/rsaauth/Classes/Controller/RsaPublicKeyGenerationController.php
index 2fa83acac94b2586b3215578aecde37b5757f2ad..3bb91ea365f54dbbea922b1e05a078542643c838 100644
--- a/typo3/sysext/rsaauth/Classes/Controller/RsaPublicKeyGenerationController.php
+++ b/typo3/sysext/rsaauth/Classes/Controller/RsaPublicKeyGenerationController.php
@@ -16,7 +16,8 @@ namespace TYPO3\CMS\Rsaauth\Controller;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Http\HtmlResponse;
+use TYPO3\CMS\Core\Http\JsonResponse;
+use TYPO3\CMS\Core\Http\Response;
 use TYPO3\CMS\Rsaauth\Backend\BackendFactory;
 use TYPO3\CMS\Rsaauth\Storage\StorageFactory;
 
@@ -35,7 +36,7 @@ class RsaPublicKeyGenerationController
         $backend = BackendFactory::getBackend();
         if ($backend === null) {
             // add a HTTP 500 error code, if an error occurred
-            return new HtmlResponse('', 500);
+            return new JsonResponse(null, 500);
         }
 
         $keyPair = $backend->createNewKeyPair();
@@ -43,6 +44,9 @@ class RsaPublicKeyGenerationController
         $storage->put($keyPair->getPrivateKey());
         session_commit();
         $content = $keyPair->getPublicKeyModulus() . ':' . sprintf('%x', $keyPair->getExponent()) . ':';
-        return new HtmlResponse($content);
+
+        $response = new Response('php://temp', 200, ['Content-Type' => 'application/json; charset=utf-8']);
+        $response->getBody()->write($content);
+        return $response;
     }
 }
diff --git a/typo3/sysext/rsaauth/Classes/RsaEncryptionEncoder.php b/typo3/sysext/rsaauth/Classes/RsaEncryptionEncoder.php
index 5bb6dda074044bdf7e9e89b31cff8d09af66e52c..001ba3c4def0d20ab8ed2cb75e7b3343f2c1e5df 100644
--- a/typo3/sysext/rsaauth/Classes/RsaEncryptionEncoder.php
+++ b/typo3/sysext/rsaauth/Classes/RsaEncryptionEncoder.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Rsaauth;
 
 use Psr\Http\Message\ResponseInterface;
 use TYPO3\CMS\Core\Http\HtmlResponse;
+use TYPO3\CMS\Core\Http\Response;
 use TYPO3\CMS\Core\Page\PageRenderer;
 use TYPO3\CMS\Core\SingletonInterface;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -120,6 +121,9 @@ class RsaEncryptionEncoder implements SingletonInterface
                 ])
             );
         }
-        return new HtmlResponse('No OpenSSL backend could be obtained for rsaauth.', 500);
+
+        $response = new Response('php://temp', 500, ['Content-Type' => 'application/json; charset=utf-8']);
+        $response->getBody()->write('No OpenSSL backend could be obtained for rsaauth.');
+        return $response;
     }
 }
diff --git a/typo3/sysext/taskcenter/Classes/TaskStatus.php b/typo3/sysext/taskcenter/Classes/TaskStatus.php
index 20aa6878f909b35535451c8d4b14afc36413a0a2..d67297ea20cd587a66d85412ff7b0f37134fa9ed 100644
--- a/typo3/sysext/taskcenter/Classes/TaskStatus.php
+++ b/typo3/sysext/taskcenter/Classes/TaskStatus.php
@@ -16,7 +16,7 @@ namespace TYPO3\CMS\Taskcenter;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Http\HtmlResponse;
+use TYPO3\CMS\Core\Http\JsonResponse;
 
 /**
  * Status of tasks
@@ -39,7 +39,7 @@ class TaskStatus
         $this->getBackendUserAuthentication()->uc['taskcenter']['states'][$item] = $state;
         $this->getBackendUserAuthentication()->writeUC();
 
-        return new HtmlResponse('');
+        return new JsonResponse(null);
     }
 
     /**
@@ -60,7 +60,7 @@ class TaskStatus
         $this->getBackendUserAuthentication()->uc['taskcenter']['sorting'] = serialize($sort);
         $this->getBackendUserAuthentication()->writeUC();
 
-        return new HtmlResponse('');
+        return new JsonResponse(null);
     }
 
     /**