Как корректно настроить политику CORS на Laravel 9 (localhost)?

Для корректной настройки политики CORS (Cross-Origin Resource Sharing) в Laravel 9 на локальном сервере (localhost), вам потребуется выполнить несколько шагов:

1. Установите пакет Laravel CORS:

В командной строке перейдите в корневую папку вашего проекта Laravel и выполните следующую команду:

    composer require fruitcake/laravel-cors

Это установит пакет fruitcake/laravel-cors и его зависимости.

2. Опубликуйте конфигурационный файл пакета:

В командной строке выполните следующую команду:

    php artisan vendor:publish --tag=cors

Команда опубликует конфигурационный файл пакета config/cors.php, который вы сможете настроить по вашим потребностям.

3. Настройте политику CORS в файле config/cors.php:

В открытом файле config/cors.php вы найдете примеры настроек CORS. Вы можете изменить эти настройки в соответствии с вашими потребностями. Некоторые наиболее важные настройки:

- 'paths' => ['api/*'], - Здесь вы можете указать пути, которые требуют поддержки CORS. По умолчанию, указан путь api/*, что означает, что все запросы к yourapp.test/api/* будут поддерживаться политикой CORS.

- 'allowed_methods' => ['*'], - Здесь вы можете указать разрешенные HTTP-методы для CORS-запросов. '*' означает, что разрешены все методы.

- 'allowed_origins' => ['http://localhost:8080'], - Здесь вы можете указать домены, разрешенные для CORS-запросов. По умолчанию, указан только http://localhost:8080, но вы можете добавить другие домены, разделив их запятыми.

- 'allowed_headers' => ['*'], - Здесь вы можете указать разрешенные заголовки для CORS-запросов. '*' означает, что разрешены все заголовки.

- 'exposed_headers' => [], - Здесь вы можете указать список заголовков, которые будут доступны на клиентской стороне. По умолчанию, массив пуст.

- 'max_age' => 0, - Здесь вы можете указать максимальное время хранения предыдущего ответа на префлайт-запрос (Preflight request) в секундах. По умолчанию, установлено значение 0, что означает отключение кэширования.

4. Примените настройки политики CORS в маршрутах или глобально:

В файле маршрутов (например, routes/api.php) вы можете применить политику CORS только для определенных маршрутов:

    Route::middleware('cors')->group(function () {
        // Здесь находятся ваши маршруты, требующие CORS-поддержки
    });

Чтобы применить политику CORS ко всем маршрутам в вашем приложении, вы можете отредактировать файл app/Http/Kernel.php:

    protected $middlewareGroups = [
        'web' => [
            // Здесь находятся ваши текущие middleware
        ],

        'api' => [
            'throttle:60,1',
            FruitcakeCorsHandleCors::class,
            // Здесь находится middleware для работы с CORS
        ],
    ];

5. Запустите сервер и проверьте настройки политики CORS:

Запустите ваш локальный сервер Laravel, используя команду:

    php artisan serve

После запуска сервера вы можете отправить тестовый CORS-запрос с клиентской стороны на ваше приложение Laravel через http://localhost:8000/api/* (или другой указанный путь в настройках CORS). Если политика CORS настроена правильно, запрос должен быть разрешен и обработан корректно.

Это подробное руководство показывает, как корректно настроить политику CORS в Laravel 9 на локальном сервере (localhost). Учитывая ваши потребности, вы можете настроить дополнительные параметры и правила для политики CORS, как указано в документации пакета fruitcake/laravel-cors.