Если вы веб-разработчик и работаете с Lumen, облегченной микроплатформой PHP, возможно, вы столкнулись с печально известной «ошибкой CORS аутентификации заголовка Lumen». Эта ошибка возникает, когда вы пытаетесь аутентифицировать запросы с использованием токенов Bearer, но сталкиваетесь с проблемами совместного использования ресурсов между источниками (CORS). В этой статье мы рассмотрим различные методы устранения и устранения этой ошибки, сопровождаемые разговорными объяснениями и примерами кода.
Метод 1: включение заголовков CORS
Одной из распространенных причин «Ошибки CORS аутентификации заголовка Lumen» является отсутствие правильных заголовков CORS в вашем приложении Lumen. Чтобы включить CORS, вы можете добавить необходимые заголовки в свое промежуточное программное обеспечение или создать выделенное промежуточное программное обеспечение CORS. Вот пример использования специального промежуточного программного обеспечения:
// Create a new middleware file, e.g., CorsMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class CorsMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Authorization, Content-Type');
return $response;
}
}
Метод 2: настройка промежуточного программного обеспечения CORS
В Lumen вы можете использовать встроенные функции промежуточного программного обеспечения для настройки CORS. Откройте файл bootstrap/app.php
и раскомментируйте строку $app->middleware([])
. Затем добавьте промежуточное программное обеспечение Barryvdh\Cors\HandleCors::class
для включения CORS:
// Add the following line to bootstrap/app.php
$app->middleware([
// ...
Barryvdh\Cors\HandleCors::class,
]);
Метод 3: разрешение запросов OPTIONS
«Ошибка CORS носителя аутентификации заголовка Lumen» также может возникать из-за отсутствия обработки запросов OPTIONS. Разрешая запросы OPTIONS, вы включаете предполетные запросы, необходимые для CORS. Добавьте следующий код в метод handle
вашего промежуточного программного обеспечения CORS:
if ($request->getMethod() === 'OPTIONS') {
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Authorization, Content-Type');
$response->headers->set('Access-Control-Max-Age', '86400');
$response->setStatusCode(200);
return $response;
}
Метод 4. Использование пакета CORS
Если вы предпочитаете более удобное решение, вы можете использовать пакет CORS, специально разработанный для Lumen. Один из популярных пакетов — barryvdh/laravel-cors
. Установите его с помощью Composer:
composer require barryvdh/laravel-cors
Затем зарегистрируйте промежуточное программное обеспечение CORS в bootstrap/app.php
:
// Add the following line to bootstrap/app.php
$app->routeMiddleware([
// ...
'cors' => Barryvdh\Cors\HandleCors::class,
]);
.
Обнаружение «Ошибки CORS носителя аутентификации заголовка Lumen» может разочаровать, но с помощью методов, описанных в этой статье, у вас есть множество подходов к устранению неполадок и решению проблемы. Включив заголовки CORS, настроив промежуточное программное обеспечение, разрешив запросы OPTIONS или используя специальный пакет CORS, вы можете обеспечить простую аутентификацию и повысить безопасность и функциональность вашего Lumen API.