馃實 Configuraci贸n CORS en Laravel

馃實 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.

Publicar un comentario

0 Comentarios