Cuando hacemos peticiones a nuestro backend desde otro servidor (Como por ejemplo, desde nuestro framework fronted, alojado en otra dirección), nos dará un error de acceso no permitido CORS (Cross-Origin Request Blocked).
Este error no es especifico de Laravel, si no que es un método de seguridad que se dá en las peticiones que se hagan a otro servidor y no se tenga acceso. Para solucionar esto, manteniendo la seguridad, vamos a crear un middleware en las rutas que queramos realizar dichas peticiones.
Crearemos el middleware en nuestro proyecto, ejecutando el siguiente comando:
php artisan make:middleware Cors
Ahora, nos dirigimos a la clase creada, que se encuentra en app/Http/Middleware/Cors.php y añadiremos esto:
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
public function handle($request, Closure $next)
{
return $next($request)
//Url a la que se le dará acceso en las peticiones
->header("Access-Control-Allow-Origin", "http://urlfronted.example")
//Métodos que a los que se da acceso
->header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
//Headers de la petición
->header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Token-Auth, Authorization");
}
}
Como siempre, registramos nuestro middleware en app/Http/kernel.php
protected $routeMiddleware = [
...,
...,
"cors" => \App\Http\Middleware\Cors::class,
];
Y por último añadimos el middleware en la/s rutas que queramos permitir estas peticiones:
Route::group(['middleware' => ['cors']], function () {
//Rutas a las que se permitirá acceso
});