XMLHttpRequest no puede cargar http://myapi/api/rating . La respuesta a la solicitud de verificación previa no pasa la verificación de control de acceso: no hay ningún encabezado 'Access-Control-Allow-Origin' en el recurso solicitado. Por lo tanto, no se permite el acceso al origen ' http://localhost:8104 '. La respuesta tenía el código de estado HTTP 403.
No puedo entender por qué no puedo hacer solicitudes CORS. Instalé el middleware aquí, lo agregué al kernel http global, pero aún no funciona. Intenté crear un middleware personalizado con sugerencias de stackoverflow, pero eso tampoco funcionó. También intenté agregar un grupo de rutas. Por último, intenté configurar los encabezados de respuesta manualmente en la acción de solicitud. Estoy realmente atascado, ¡se agradece la ayuda!
Consulte el código: https://gist.github.com/KerryRitter/0d7ababb7b9eb8d54f0ae55add9704a1
Si está utilizando Laravel 5.5
y Laravel 5.x
y enfrenta el mismo problema, como No 'Access-Control-Allow-Origin' header is present on the requested resource
. Simplemente use el siguiente paquete y configure su sistema.
Paso 1:
composer require barryvdh/laravel-cors
Paso 2
También debe agregar Cors\ServiceProvider
a su matriz de proveedores config/app.php
:
FruitCake\Cors\CorsServiceProvider::class,
Para permitir CORS
para todas sus rutas, agregue el middleware HandleCors
en la propiedad $middleware
de la clase app/Http/Kernel.php
:
Para usos globales:
protected $middleware = [ // ... \Fruitcake\Cors\HandleCors::class, ];
Para usos de middleware:
protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ // ... \Fruitcake\Cors\HandleCors::class, ], ];
Paso 3
Una vez completada la instalación, ejecute el siguiente comando para publicar los archivos del proveedor.
php artisan vendor:publish --provider="Fruitcake\Cors\ServiceProvider"
Espero que esta respuesta ayude a alguien que enfrenta el mismo problema que yo.
Laravel restringe la solicitud de origen cruzado debido a problemas de seguridad de forma predeterminada. Necesitamos crear un middleware Cors para aceptar la solicitud de un origen diferente.
Paso 1: Cree el middleware de Cors.
php artisan make:middleware Cors
Paso 2: agregue las siguientes líneas en la función de manejo antes de regresar.
//header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Origin: http://localhost:4200'); header('Access-Control-Allow-Headers: Content-Type, X-Auth-Token, Authorization, Origin'); header('Access-Control-Allow-Methods: POST, PUT');
Paso 3: Registre el middileware en el archivo app/Http/Kernel.php.
Add below line in $middleware array \App\Http\Middleware\Cors::class,
Paso 4: ahora tenemos que llamar al middleware en el archivo app/Http/Kernel.php
Add below line in $routeMiddleware array 'cors' => \App\Http\Middleware\Cors::class,
https://github.com/barryvdh/laravel-cors
El paquete laravel-cors le permite enviar encabezados de uso compartido de recursos de origen cruzado con la configuración de middleware de Laravel.
Características
Maneja las solicitudes de OPCIONES previas al vuelo de CORS Agrega encabezados de CORS a sus respuestas