From a67bd42fd6c15ce720d236232d4e8cf06cf5d912 Mon Sep 17 00:00:00 2001 From: erikn69 Date: Tue, 5 Mar 2024 09:58:05 -0500 Subject: [PATCH 1/2] Check response for avoid inject debugbar on json ajax --- src/LaravelDebugbar.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/LaravelDebugbar.php b/src/LaravelDebugbar.php index eeba521cf..3a7f08fc0 100644 --- a/src/LaravelDebugbar.php +++ b/src/LaravelDebugbar.php @@ -839,6 +839,7 @@ public function modifyResponse(Request $request, Response $response) && !$this->isJsonRequest($request, $response) && $response->getContent() !== false && in_array($request->getRequestFormat(), [null, 'html'], true) + && !$this->isJsonResponse($response) ) { try { $this->injectDebugbar($response); @@ -912,6 +913,32 @@ protected function isJsonRequest(Request $request, Response $response) return false; } + /** + * @param \Symfony\Component\HttpFoundation\Response $response + * @return bool + */ + protected function isJsonResponse(Response $response) + { + if ($response->headers->get('Content-Type') == 'application/json') { + return true; + } + + try { + $content = $response->getContent(); + + if (is_string($content)) { + $content = json_decode($content, true); + } + + if (is_array($content)) { + return true; + } + } catch (Exception $e) { + } + + return false; + } + /** * Collects the data from the collectors * From 9dbd6b19597095dc3d1d09634cd66ce3631f6a97 Mon Sep 17 00:00:00 2001 From: erikn69 Date: Wed, 6 Mar 2024 08:51:12 -0500 Subject: [PATCH 2/2] Support json_validate on isJsonResponse --- src/LaravelDebugbar.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/LaravelDebugbar.php b/src/LaravelDebugbar.php index 3a7f08fc0..fd62f9c8a 100644 --- a/src/LaravelDebugbar.php +++ b/src/LaravelDebugbar.php @@ -923,17 +923,19 @@ protected function isJsonResponse(Response $response) return true; } - try { - $content = $response->getContent(); + $content = $response->getContent(); - if (is_string($content)) { - $content = json_decode($content, true); + if (is_string($content)) { + if (function_exists('json_validate')) { + return json_validate($content); } - if (is_array($content)) { - return true; - } - } catch (Exception $e) { + // PHP <= 8.2 check + json_decode($content, true); + + return json_last_error() === JSON_ERROR_NONE; + } elseif (is_array($content)) { + return true; } return false;