Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 10 · Exercice de TD

Lire une erreur CORS

Dialoguer avec un serveur : fetch · niveau 2

Énoncé

Une étudiante a lancé le serveur du livre, puis ouvert sa page de test avec l'extension « Live Server » de son éditeur, à l'adresse http://127.0.0.1:5500/test.html. Son script appelle fetch("http://localhost:8000/api/livres") et la console affiche « blocked by CORS policy ». Expliquer le message. Proposer deux corrections, dont une qui ne touche pas au serveur. Ajouter un mode: "no-cors" aux options de fetch, comme le suggère la console, est-il une solution ?

Corrigé

La page a pour origine http://127.0.0.1:5500, l'API http://localhost:8000 : hôte et port diffèrent, ce sont deux origines. Le serveur ne renvoie pas l'en-tête d'autorisation (Access-Control-Allow-Origin), donc le navigateur refuse de livrer la réponse au script (la requête, elle, a bien atteint le serveur). Corrections : servir la page par le serveur du livre, en la plaçant dans le dossier du livre et en l'ouvrant par http://localhost:8000/…, et appeler fetch("/api/livres") : même origine, plus de CORS. Ou relancer le serveur avec --cors. mode: "no-cors" n'est pas une solution : il fait envoyer la requête sans exiger d'autorisation, mais la réponse obtenue est opaque (statut 0, corps illisible) ; le script ne peut rien en faire.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →