Этот ответ основан на этой статье . barryvdh / laravel-cors библиотека промежуточного программного обеспечения может быть использована для устранения проблемы (совместное использование ресурсов Cross-Origin).
Шаг 1 Установите его:
composer require barryvdh/laravel-cors
Шаг 2 Освобождение файлов поставщика библиотеки:
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
Шаг 3 Команда, выполняемая на шаге 2, скопирует файл cors.php в каталог конфигурации, который выглядит следующим образом:
return [
/*
|--------------------------------------------------------------------------
| Laravel CORS
|--------------------------------------------------------------------------
|
| allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
| to accept any value.
|
*/
'supportsCredentials' => false,
'allowedOrigins' => ['*'],// ex: ['abc.com', 'api.abc.com']
'allowedHeaders' => ['*'],
'allowedMethods' => ['*'],// ex: ['GET', 'POST', 'PUT', 'DELETE']
'exposedHeaders' => [],
'maxAge' => 0,
];
Для параметра allowedOrigins
значение может быть ['*']
, которое указывает, что источник запроса может быть из любого домена или массив конкретных доменов, которые могут быть источником, который мы позволит отправить запрос на наш api
, например ['first.com', 'second.com', 'register.third.com']
, а также allowedMethods
может быть либо ['*']
, либо список допустимых HTTP verbs
, например ['POST', 'GET']
шаг 4 Регистрация промежуточного программного обеспечения cors. Откройте app/Http/kernel.php
и добавьте класс HandleCors
к $routeMiddleware
следующим образом:
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'cors' => \Barryvdh\Cors\HandleCors::class, // add this line to enable cors to your routes
];
Шаг 5 Теперь вы можете добавить промежуточное программное обеспечение laravel-cors
на любой желаемый маршрут. Например, в Routes/api.php
я сделаю это:
Route::apiResource('category', 'CategoryController')->middleware('cors');
Route::apiResource('product', 'ProductController')->middleware('cors');