У меня есть промежуточное ПО 'cors', которое просто делает это
public function handle($request, Closure $next)
{
// return response()->json(['message' => 'Not Found.'], 404);
if (config('app.env') !== 'production') {
return $next($request)
->header("Access-Control-Allow-Origin", "*")
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
} else {
return $next($request);
}
}
Я добавил промежуточное ПО в routes/api.php
таким образом:
<?php
// Rotte /api/v1
Route::group(['prefix' => 'v1', 'middleware' => ['cors'] ], function () {
... wrapping all /api/v1 routes
}
Когда я посещаю URLиз своего браузера я вижу в опциях разработчика, что
Но, когда javscript вызывает тот же URL, предварительный запрос 'option' завершается неудачно
Доступ к XMLHttpRequest в 'https://project.local/api/v1/customer' от источника' https://localhost:3000' заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-ControlЗаголовок -Allow-Origin 'присутствует в запрашиваемом ресурсе.
Что я делаю не так?
Обратите внимание, что запрос laravel для перечисления моих маршрутов фактически показывает, что cors
php artisan route:list --path api/v1/
+--------+-----------+-------------------------------+------------------+----------------------------------------------------------+---------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------------------+------------------+----------------------------------------------------------+---------------------+
| | GET|HEAD | api/v1/customer | customer.index | App\Http\Controllers\CustomerController@index | api,cors,jwt.verify |
| | POST | api/v1/customer | customer.store | App\Http\Controllers\CustomerController@store | api,cors,jwt.verify |
| | GET|HEAD | api/v1/customer/{customer} | customer.show | App\Http\Controllers\CustomerController@show | api,cors,jwt.verify |
| | PUT|PATCH | api/v1/customer/{customer} | customer.update | App\Http\Controllers\CustomerController@update | api,cors,jwt.verify |
| | DELETE | api/v1/customer/{customer} | customer.destroy | App\Http\Controllers\CustomerController@destroy | api,cors,jwt.verify |