Якщо ти працюєш з Laravel-API на бекенді та JavaScript-застосунком на фронтенді, який використовує токен-аутентифікацію, напевно вже стикнувся з відомою проблемою CORS. Якщо ти зараз відчайдушно намагаєшся виправити помилку CORS, коли твій запит на токен постійно відкидається з помилкою CORS, то ти потрапив саме в потрібне місце!
Після багатьох безуспішних спроб знайти рішення, я нарешті знайшов правильний спосіб і хочу поділитися ним — щоб ти (і я в майбутньому) більше не потрапили в це CORS-хаос.
Початкові умови
- Laravel-бекенд-застосунок
- JavaScript-фронтенд з токен-аутентифікацією
- Запит на токен постійно викликає CORS помилку
Рішення в три кроки
1. Перевірка налаштувань CORS
Перше, що потрібно зробити, це перевірити, чи правильно налаштовані CORS-настройки в Laravel. Для цього потрібно перевірити конфігураційний файл CORS за адресою config/cors.php
.
Якщо цей файл відсутній, його можна створити за допомогою наступної команди:
php artisan config:publish cors
Після виконання цієї команди файл з'явиться за адресою config/cors.php
.
2. Налаштування правильних параметрів
У файлі config/cors.php
потрібно змінити два основні параметри:
- Підтримка облікових даних: Переконайтеся, що опція
supports_credentials
встановлена наtrue
:'supports_credentials' => true,
- Розширення шляхів: Laravel зазвичай обробляє стандартні API-маршрути під
api/*
. Але якщо ваші запити на токени використовують інші кінцеві точки, наприклад,sanctum/csrf-cookie
абоoauth/*
, ці шляхи потрібно явно вказати в конфігурації:'paths' => ['api/*', 'sanctum/csrf-cookie', 'oauth/*'],
Це було найбільшим каменем спотикання в моєму випадку!
3. Очистка кешу і застосування налаштувань
Laravel використовує кешування конфігурацій, тому після зміни налаштувань потрібно очистити кеш і оптимізувати його:
php artisan optimize
І ось воно: Працює!
Висновок
Отже, якщо твій запит на токен не працює, хоча ти впевнений, що все правильно налаштовано, перевір ще раз налаштування CORS. Мале уточнення в конфігурації paths
може стати вирішальним фактором!
І завжди пам'ятай: CORS — це як строгий охоронець на вході: або ти в списку, або залишаєшся зовні.
Сподіваюся, цей пост допоможе тобі швидше вирішувати майбутні проблеми з CORS. Успіхів у програмуванні!
Оригінально опубліковано на https://www.christianbachmann.ch 26 січня 2025 року.
Перекладено з: CORS und Laravel Authentication endlich gelöst — Christian Bachmann