Maison >interface Web >js tutoriel >Pourquoi ma requête AngularJS ngResource adressée à une API AWS échoue-t-elle à la vérification préalable du contrôle d'accès ?

Pourquoi ma requête AngularJS ngResource adressée à une API AWS échoue-t-elle à la vérification préalable du contrôle d'accès ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-28 04:32:11572parcourir

Why is my AngularJS ngResource request to an AWS API failing the preflight Access-Control check?

Échec de la vérification du contrôle d'accès de la demande préalable au vol

Rencontre de l'erreur

Lors de l'utilisation de ngResource pour interagir avec une API REST sur Amazon Web Services, les utilisateurs peut rencontrer l'erreur suivante :

XMLHttpRequest cannot load
http://server.apiurl.com:8000/s/login?login=facebook. Response to
preflight request doesn't pass access control check: No
'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'http://localhost' is therefore not allowed access.
Error 405

Comprendre CORS

Ceci L’erreur provient du partage de ressources Cross-Origin (CORS). CORS applique des restrictions de sécurité qui empêchent les ressources d'un domaine (par exemple, localhost) d'accéder directement aux ressources d'un autre domaine (par exemple, server.apiurl.com).

Options de dépannage

Pour résoudre le problème , envisagez les approches suivantes :

  • Désactivez CORS : Utilisez un navigateur ou un paramètre Chrome pour désactiver temporairement CORS à des fins de test.
  • Utilisez un plug-in de navigateur : Installez un plug-in de navigateur pour activer les requêtes d'origine croisée.
  • Utilisez un proxy : Implémentez un proxy comme nginx pour transférer les requêtes de localhost vers le serveur distant, en contournant le domaine restrictions.
  • Configurer le serveur : Assurez-vous que le serveur Web sur l'instance EC2 est correctement configuré pour CORS. Reportez-vous à la documentation spécifique du serveur pour obtenir des conseils.

Implication des requêtes inter-domaines

Il est important de noter que l'accès à un domaine externe à partir de localhost constitue une requête inter-domaine. Cela déclenche le mécanisme de sécurité CORS, qui empêche tout accès non autorisé.

Contourner CORS

Bien que la désactivation de CORS ou l'utilisation de plugins puisse être une solution rapide pour les tests, cela ne résout pas le problème sous-jacent des croisements. communication d'origine. Utiliser un proxy ou configurer le serveur pour autoriser l'accès multi-origine est une approche plus complète.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn