/ / CORS Error de verificación previa con Apache, Laravel y AngularJS - angularjs, apache, laravel, http, cors

Error de verificación previa de CORS con Apache, Laravel y AngularJS - angularjs, apache, laravel, http, cors

He implementado un backend con un servidor Apache con AMI de AWS y Laravel. Para la autenticación, uso el complemento JWT Auth.

Mi interfaz está construida con AngularJS. Antes de usar la autenticación, todo funcionó bien. Cuando trato de autenticar al usuario con un encabezado de autorización, recibo un error CORS Preflight. Uso la siguiente llamada desde mi aplicación AngularJS:

delete $http.defaults.headers.common["X-Requested-With"];
$http.defaults.headers.common.Accept = "text/plain";
$http({
url: "http://MYURL",
method: "GET",
headers: {
"Access-Control-Allow-Headers": "Authorization, Content-Type, Accept",
"Content-Type" : "text/plain",
"Authorization": "Bearer "+token,
}
})

En mi backend de Laravel utilicé la siguiente configuración:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Authorization, Content-Type");

Esta es la respuesta de la llamada OPTIONS: enter image description here

Este es el error que recibo en Google Chrome: Campo de encabezado de solicitud La autorización no está permitida por Access-Control-Allow-Headers en la respuesta previa al vuelo.

¿Alguna idea sobre este tema? ¿Tengo que configurar esto en Angular, Laravel o mi httpd.conf?

EDITAR:

Lo agregué como Middleware global y en la aplicación.php como proveedor de servicios. La configuración se ve así:

return [
"supportsCredentials" => false,
"allowedOrigins" => ["*"],
"allowedHeaders" => ["Authorization, Content-Type"],
"allowedMethods" => ["*"],
"exposedHeaders" => [],
"maxAge" => 0,
"hosts" => [],
];

Pero no tengo idea si funciona correctamente.

Respuestas

1 para la respuesta № 1

¿Ha considerado usar un complemento para administrar la configuración de CORS como éste?

Parece que la lista de encabezados que permite en el lado del servidor (Authorization, Content-Type) no es lo mismo que la lista de encabezados que envía la solicitud (Authorization, Content-Type, Accept) Podría ser que el front-end solicite permisos que no está permitiendo en el back-end.