/ / CORS Preflight error with Apache, Laravel and AngularJS - angularjs, apache, laravel, http, cors

Erreur de contrôle en amont CORS avec Apache, Laravel et AngularJS - angularjs, apache, laravel, http, cors

J'ai implémenté un backend avec un serveur Apache avec AMI d'AWS et Laravel. Pour l'authentification, j'utilise le plugin JWT Auth.

Mon frontend est construit avec AngularJS. Avant d'utiliser l'authentification, tout fonctionnait bien. Lorsque j'essaie d'authentifier l'utilisateur avec un en-tête d'autorisation, j'obtiens une erreur de contrôle en amont CORS. J'utilise l'appel suivant depuis mon application 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,
}
})

Dans mon backend Laravel, j'ai utilisé la configuration suivante:

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

Voici la réponse de l'appel OPTIONS: entrer la description de l'image ici

Voici l'erreur que j'obtiens dans Google Chrome: Champ d'en-tête de demande L'autorisation n'est pas autorisée par Access-Control-Allow-Headers dans la réponse de contrôle en amont.

Des idées sur cette question? Dois-je le configurer dans Angular, Laravel ou mon httpd.conf?

MODIFIER:

Je l'ai ajouté en tant que middleware mondial et dans app.php en tant que fournisseur de services. La configuration ressemble à ceci:

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

Mais je n'ai aucune idée si cela fonctionne correctement.

Réponses:

1 pour la réponse № 1

Avez-vous envisagé d'utiliser un plugin pour gérer la configuration de CORS comme celui-là?

Il semble que la liste des en-têtes que vous autorisez côté serveur (Authorization, Content-Type) n'est pas la même que la liste des en-têtes envoyés par la demande (Authorization, Content-Type, Accept). Il se peut que le serveur frontal demande des autorisations que vous n'autorisez pas sur le serveur principal.