Ошибка CORS в Laravel 7 при использовании Laravel Lighthouse - PullRequest
1 голос
/ 06 апреля 2020

У меня есть API, построенный с Laravel и Lighthouse- php (для GraphQL). Мой клиент построен на Vue js и использует Apollo для реализации на клиентском языке graphQL. Каждый раз, когда я делаю запрос, я получаю следующую ошибку:

Access to fetch at 'http://localhost:8000/graphql' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Естественно, я приступил к установке пакета laravel -cors, но потом понял, что он пришел по умолчанию с моей установкой Laravel (7.2 0,2). Это означало, что \Fruitcake\Cors\HandleCors::class уже был добавлен в массив промежуточного программного обеспечения в Kernel.php, а файл конфигурации cors уже был в моем каталоге конфигурации.

После некоторого поиска в Google я понял, что мне нужно добавить \Fruitcake\Cors\HandleCors::class в массив route.middleware в моем config/lighthouse.php файле

Он все еще не работал. Я перезапустил сервер, очистил кеш, очистил конфигурацию и запустил composer dump-autoload, но все равно получаю ошибку. Я понятия не имею, как пройти через это. Будем благодарны за любую помощь.

Версии

Laravel 7.2.2

Laravel Маяк 4.10

1 Ответ

1 голос
/ 07 апреля 2020

Я получил некоторую помощь от людей в маяке здесь . Проблема была с моей конфигурацией Cors. Мне нужно было добавить graphql к массиву путей в config / cors, но я по ошибке добавил graphql/*. Таким образом, массив путей выглядел следующим образом

'paths' => ['api/*', 'graphql/*'],

вместо этого

'paths' => ['api/*', 'graphql'],

После внесения изменений я запускаю следующее: php artisan cache:clear, php artisan config:clear и composer dump-autoload перед ошибка CORS исчезла.

Полная конфигурация, которая работала для меня, была

return [
    'paths' => ['api/*', 'graphql'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*'],
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*'],
    'exposed_headers' => false,
    'max_age' => false,
    'supports_credentials' => false,
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...