馃實 Configuraci贸n CORS en Laravel
Cuando construyes una API en Laravel que ser谩 consumida desde un frontend (por ejemplo, Vue, React o Angular), es com煤n enfrentarse a problemas de CORS (Cross-Origin Resource Sharing). Esto ocurre cuando el navegador bloquea las solicitudes que provienen de un dominio diferente al del servidor de la API.
馃挕 ¿Qu茅 es CORS?
CORS es un mecanismo de seguridad del navegador que restringe las solicitudes HTTP entre diferentes or铆genes.
Por ejemplo, si tu API est谩 en api.tusitio.com y tu frontend en app.tusitio.com, necesitar谩s configurar CORS correctamente para permitir la comunicaci贸n.
⚙️ Instalaci贸n y configuraci贸n
Laravel incluye el paquete Fruitcake/laravel-cors por defecto desde la versi贸n 7.x, as铆 que no necesitas instalar nada adicional.
El archivo de configuraci贸n se encuentra en:
config/cors.php
馃З Ejemplo de configuraci贸n b谩sica
Abre el archivo config/cors.php y verifica que tenga una configuraci贸n similar a esta:
return [
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
馃敀 Configuraci贸n m谩s segura
En lugar de permitir todos los or铆genes (*), puedes especificar dominios de confianza:
'allowed_origins' => ['https://mi-frontend.com', 'https://admin.miapp.com'],
Esto es recomendable en entornos de producci贸n.
馃О Middleware CORS
El middleware encargado de aplicar las pol铆ticas CORS est谩 registrado autom谩ticamente en:
// app/Http/Kernel.php
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
Si por alguna raz贸n quieres aplicarlo de forma manual:
Route::middleware(['cors'])->group(function () {
Route::get('/users', [UserController::class, 'index']);
});
馃 Verificando CORS en el navegador
- Abre la consola del navegador (F12 → pesta帽a “Network”).
- Realiza una petici贸n desde tu frontend al backend.
- Si aparece el error:
Access to fetch at '...' from origin '...' has been blocked by CORS policy,
revisa tu configuraci贸n en config/cors.php.
馃摌 Ejemplo visual
馃枼️ Petici贸n desde el Frontend (fetch JS)
fetch('https://api.miapp.com/api/users')
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error('Error CORS:', err));
馃捑 Respuesta esperada del backend
{
"data": [
{ "id": 1, "name": "Jorge", "email": "jorge@example.com" },
{ "id": 2, "name": "Ana", "email": "ana@example.com" }
]
}
✅ Consejos finales
- En desarrollo puedes dejar
'*'como origen permitido. - En producci贸n, limita a los dominios espec铆ficos de tus aplicaciones.
- Verifica que el middleware CORS est茅 registrado correctamente.
- Reinicia el servidor si modificas el archivo
cors.php.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias