Erreur CORS : en-tête 'Access-Control-Allow-Origin' manquant
Problème :
Lorsque vous utilisez ngResource d'AngularJS pour envoyer des requêtes à une API REST hébergée sur Amazon Web Services, l'erreur suivante se produit :
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Copier après la connexion
Causes :
Cette erreur se produit généralement en raison de restrictions CORS (Cross-Origin Resource Sharing). CORS empêche différentes origines (c'est-à-dire les noms de domaine) d'interagir les unes avec les autres sans autorisation explicite.
Résolution :
Il existe plusieurs méthodes pour résoudre ce problème :
-
Désactiver CORS : Utilisez une extension de navigateur ou modifiez les paramètres du navigateur pour désactiver les protections CORS (non recommandé pour des raisons de sécurité) :
Utilisez un serveur local (tel que nginx) comme proxy pour transmettre les requêtes à l'API distante et modifier les en-têtes comme nécessaire.-
Configurer la prise en charge côté serveur :
Activez CORS sur le serveur API en ajoutant les en-têtes HTTP appropriés (par exemple, Access-Control-Allow-Origin). Reportez-vous à la documentation de votre serveur Web spécifique. Comprendre CORS :-
CORS restreint la communication entre origines pour garantir la sécurité. Lorsqu'une demande provient d'une origine différente, une demande de contrôle en amont est envoyée au serveur pour vérifier si la demande est autorisée. Le serveur répond avec un en-tête Access-Control-Allow-Origin pour indiquer si la requête est autorisée.
Si le serveur n'inclut pas l'en-tête Access-Control-Allow-Origin, la requête ne sera pas traitée. , et le navigateur affichera l'erreur CORS.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!