From 0124751605dbdbf0340670ca8c8a2b50d300be5b Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Thu, 12 Sep 2024 09:58:22 -0500 Subject: [PATCH 1/4] wip --- src/Illuminate/Foundation/Application.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Foundation/Application.php b/src/Illuminate/Foundation/Application.php index b9bdd713422a..675624db8b5a 100755 --- a/src/Illuminate/Foundation/Application.php +++ b/src/Illuminate/Foundation/Application.php @@ -40,7 +40,7 @@ class Application extends Container implements ApplicationContract, CachesConfig * * @var string */ - const VERSION = '10.48.20'; + const VERSION = '10.48.21'; /** * The base path for the Laravel installation. From c4ea52bb044faef4a103d7dd81746c01b2ec860e Mon Sep 17 00:00:00 2001 From: taylorotwell Date: Thu, 12 Sep 2024 15:00:09 +0000 Subject: [PATCH 2/4] Update version to v10.48.22 --- src/Illuminate/Foundation/Application.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Foundation/Application.php b/src/Illuminate/Foundation/Application.php index 675624db8b5a..0ebba8db61bd 100755 --- a/src/Illuminate/Foundation/Application.php +++ b/src/Illuminate/Foundation/Application.php @@ -40,7 +40,7 @@ class Application extends Container implements ApplicationContract, CachesConfig * * @var string */ - const VERSION = '10.48.21'; + const VERSION = '10.48.22'; /** * The base path for the Laravel installation. From 1b3ef8f48a3b4fe8c9a601c0c051422592f0d19f Mon Sep 17 00:00:00 2001 From: taylorotwell Date: Thu, 12 Sep 2024 15:01:48 +0000 Subject: [PATCH 3/4] Update CHANGELOG --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1721828ee90..79c643f27e20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Release Notes for 10.x -## [Unreleased](https://github.com/laravel/framework/compare/v10.48.20...10.x) +## [Unreleased](https://github.com/laravel/framework/compare/v10.48.22...10.x) + +## [v10.48.22](https://github.com/laravel/framework/compare/v10.48.20...v10.48.22) - 2024-09-12 ## [v10.48.20](https://github.com/laravel/framework/compare/v10.48.19...v10.48.20) - 2024-08-09 From 646520ad682d98b5211c6e26092259cfbe130b5c Mon Sep 17 00:00:00 2001 From: Tim MacDonald Date: Fri, 4 Oct 2024 03:34:32 +1000 Subject: [PATCH 4/4] Ensure headers are only attached to illuminate responses (#53019) --- .../AddLinkHeadersForPreloadedAssets.php | 3 ++- tests/Http/Middleware/VitePreloadingTest.php | 26 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php b/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php index 93ca06e958b5..36ffb7b3e480 100644 --- a/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php +++ b/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php @@ -2,6 +2,7 @@ namespace Illuminate\Http\Middleware; +use Illuminate\Http\Response; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Vite; @@ -17,7 +18,7 @@ class AddLinkHeadersForPreloadedAssets public function handle($request, $next) { return tap($next($request), function ($response) { - if (Vite::preloadedAssets() !== []) { + if ($response instanceof Response && Vite::preloadedAssets() !== []) { $response->header('Link', Collection::make(Vite::preloadedAssets()) ->map(fn ($attributes, $url) => "<{$url}>; ".implode('; ', $attributes)) ->join(', ')); diff --git a/tests/Http/Middleware/VitePreloadingTest.php b/tests/Http/Middleware/VitePreloadingTest.php index 641280cc8d9e..63b64b99519e 100644 --- a/tests/Http/Middleware/VitePreloadingTest.php +++ b/tests/Http/Middleware/VitePreloadingTest.php @@ -9,6 +9,7 @@ use Illuminate\Http\Response; use Illuminate\Support\Facades\Facade; use PHPUnit\Framework\TestCase; +use Symfony\Component\HttpFoundation\Response as SymfonyResponse; class VitePreloadingTest extends TestCase { @@ -20,7 +21,7 @@ protected function tearDown(): void public function testItDoesNotSetLinkTagWhenNoTagsHaveBeenPreloaded() { - $app = new Container(); + $app = new Container; $app->instance(Vite::class, new class extends Vite { protected $preloadedAssets = []; @@ -36,7 +37,7 @@ public function testItDoesNotSetLinkTagWhenNoTagsHaveBeenPreloaded() public function testItAddsPreloadLinkHeader() { - $app = new Container(); + $app = new Container; $app->instance(Vite::class, new class extends Vite { protected $preloadedAssets = [ @@ -57,4 +58,25 @@ public function testItAddsPreloadLinkHeader() '; rel="modulepreload"; foo="bar"' ); } + + public function testItDoesNotAttachHeadersToNonIlluminateResponses() + { + $app = new Container; + $app->instance(Vite::class, new class extends Vite + { + protected $preloadedAssets = [ + 'https://laravel.com/app.js' => [ + 'rel="modulepreload"', + 'foo="bar"', + ], + ]; + }); + Facade::setFacadeApplication($app); + + $response = (new AddLinkHeadersForPreloadedAssets)->handle(new Request, function () { + return new SymfonyResponse('Hello Laravel'); + }); + + $this->assertNull($response->headers->get('Link')); + } }