Разрешение ошибки Laravel CORS на локальном хосте: простые исправления и примеры кода

Если вы разработчик Laravel и работаете в локальной среде разработки, возможно, вы столкнулись с неприятной ошибкой CORS (совместное использование ресурсов между источниками). Эта ошибка возникает, когда веб-приложение, работающее на одном домене (в данном случае localhost), пытается отправить запросы к другому домену, а браузер блокирует запрос из соображений безопасности. В этом сообщении блога мы рассмотрим несколько способов устранения ошибки Laravel CORS на локальном хосте и по ходу дела предоставим вам простые для понимания примеры кода.

Метод 1. Установка пакета Laravel CORS
Один из самых простых способов решения проблем CORS в Laravel — использование специального пакета. Пакет Fruitcake/laravel-cors предоставляет промежуточное программное обеспечение, которое добавляет необходимые заголовки для включения запросов между источниками. Чтобы установить пакет, откройте терминал и выполните следующую команду:

composer require fruitcake/laravel-cors

После установки вам необходимо зарегистрировать промежуточное ПО в файле app/Http/Kernel.php:

protected $middleware = [
    // ...
    \Fruitcake\Cors\HandleCors::class,
];

Это промежуточное программное обеспечение автоматически добавит необходимые заголовки к ответам вашего приложения Laravel, позволяя выполнять запросы между источниками.

Метод 2: настройка заголовков CORS вручную
Если вы предпочитаете не использовать пакет, вы можете вручную настроить заголовки CORS в своем приложении Laravel. Откройте файл app/Http/Middleware/VerifyCsrfToken.phpи добавьте следующий код в метод handle:

public function handle($request, Closure $next)
{
    $response = $next($request);

    $response->header('Access-Control-Allow-Origin', '*');
    $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
    $response->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');

    return $response;
}

Явно устанавливая заголовки Access-Control-Allow-Origin, Access-Control-Allow-Methodsи Access-Control-Allow-Headers, вы разрешаете запросы между источниками к вашему приложению Laravel.

Метод 3: изменение файла.htaccess (Apache).
Если вы используете Apache в качестве веб-сервера, вы также можете изменить файл .htaccessв общей папке вашего проекта Laravel, чтобы включить КОРС. Добавьте следующие строки в начало файла:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE"
    Header set Access-Control-Allow-Headers "Content-Type, Authorization"
</IfModule>

Эти директивы установят необходимые заголовки для CORS, позволяя выполнять запросы к вашему приложению Laravel из разных источников.

Работа с ошибками CORS на локальном хосте может быть неприятной, но, к счастью, в Laravel есть несколько способов их устранения. В этой статье мы обсудили три подхода: использование пакета Laravel CORS, настройку заголовков CORS вручную и изменение файла.htaccess для Apache. Реализуя эти методы, вы можете успешно решать проблемы CORS во время локальной разработки, обеспечивая бесперебойную связь между вашим приложением Laravel и другими доменами.