Laravel - クラス・ミドルウェア - HandleCors はどこへ


 クラウディア


1. 概要
2. 状況
3. 対処
4. 備考

1. 概要

 「Laravel Framework 8.83.27」を「Laravel Framework 12.9.0」へ移植していた時のことです。

2. 状況

 「Laravel Framework 8.83.27」の方に、「fruitcake/laravel-cors」というパッケージがインストールされておりまして。

app/Http/Kernel.php
 に。

class Kernel extends HttpKernel
{
	・・・	略	・・・

    protected $middleware = [
        \Fruitcake\Cors\HandleCors::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];
 と定義しておりました。  「Laravel Framework 12.9.0」の方で。

bootstrap/app.php
 に。

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {

		$middleware->use([
			\Fruitcake\Cors\HandleCors::class,
			\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
			\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
		]);
 てな感じで、定義しましたらば。

Target class [Fruitcake\Cors\HandleCors] does not exist.
 てなことを言われますので。  インストールしようとしましたらば。

composer require fruitcake/laravel-cors

./composer.json has been updated
Running composer update fruitcake/laravel-cors
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

・・・	略	・・・

Installation failed, reverting ./composer.json and ./composer.lock to their original content.
 てなことを言うて、怒られます。  調べましたらば、「fruitcake/laravel-cors」は、外部のパッケージから、「Laravel」の標準モジュールに昇格したそうです。

3. 対処

 ちゅうことなので。

bootstrap/app.php
 を、下記のように書き換えることで。

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {

		$middleware->use([
			\Illuminate\Http\Middleware\HandleCors::class,		// ← ココです
			\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
			\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
		]);
 正常に動作するようになりました。

4. 備考

 本ページは、下記のサイトを参考にさせていただきました。
Laravel10 への更新作業

AbemaTV 無料体験