jQuery Academy · Leçon

AJAX interdomaines (CORS/JSONP)

Comprenez et appliquez les techniques permettant d’effectuer des requêtes AJAX interdomaines avec JSONP ou de configurer les en-têtes CORS sur le serveur pour échanger des données en toute sécurité.

Leçon 3 sur 312 étapes

AJAX interdomaines (CORS/JSONP) est une leçon jQuery Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage jQuery Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours jQuery Academy comprend 3 leçons au total.

AJAX inter-domaines : le défi

Lorsque votre site tente de récupérer des données depuis un autre site, on parle de requête AJAX inter-domaines. Cela peut souvent s’avérer délicat !

Par défaut, les navigateurs web appliquent une règle de sécurité qui empêche une page web d’envoyer des requêtes vers un domaine différent de celui dont elle est issue. Cette règle protège vos données.

Comprendre la politique de même origine

La règle de sécurité que nous venons de mentionner s’appelle la politique de même origine (SOP). Il s’agit d’une fonctionnalité fondamentale de sécurité des navigateurs.

SOP indique qu’un navigateur web n’autorise les scripts contenus dans une première page web à accéder aux données d’une seconde page web que si les deux pages ont la même origine (domaine, protocole et port).

  • Exemple : une page provenant de mywebsite.com ne peut pas récupérer directement des données depuis api.anotherdomain.com.

CORS : une solution moderne

Pour autoriser les requêtes inter-domaines en toute sécurité, la communauté du Web a développé le partage de ressources entre origines (CORS). C’est désormais la méthode standard et moderne pour gérer ce cas.

CORS fonctionne en permettant au serveur d’indiquer explicitement au navigateur que certains autres domaines sont autorisés à accéder à ses ressources.

CORS : configuration côté serveur

CORS se configure principalement sur le serveur qui fournit les données. Le serveur envoie des en-têtes HTTP spéciaux dans sa réponse afin d’indiquer quelles origines sont autorisées.

L’en-tête principal est Access-Control-Allow-Origin. Il précise quels domaines peuvent accéder à la ressource.

  • Access-Control-Allow-Origin: * (autorise tous les domaines)
  • Access-Control-Allow-Origin: https://yourdomain.com (n’autorise qu’un domaine précis)

CORS : requêtes jQuery côté client

Côté client, avec jQuery, effectuer une requête CORS ne diffère souvent pas d’une requête AJAX classique, à condition que le serveur soit correctement configuré.

jQuery gère les communications au niveau du navigateur. Il vous suffit de diriger votre appel $.ajax() vers l’URL inter-domaines.

$.ajax({
  url: "https://api.example.com/data", // Server must allow CORS
  method: "GET",
  success: function(data) {
    console.log("CORS success:", data);
  },
  error: function(jqXHR, textStatus, errorThrown) {
    console.error("CORS Error:", textStatus, errorThrown);
  }
});

CORS : requêtes de pré-vérification (OPTIONS)

Pour certaines requêtes CORS « complexes », les navigateurs effectuent une requête de pré-vérification avant d’envoyer la requête réelle. Il s’agit d’une étape de sécurité supplémentaire.

Une requête de pré-vérification utilise la méthode HTTP OPTIONS pour demander l’autorisation au serveur. Si celui-ci l’accorde, le navigateur envoie ensuite la requête réelle, par exemple PUT, DELETE ou une requête comportant des en-têtes personnalisés.

JSONP : une ancienne solution

Avant l’adoption généralisée de CORS, JSONP (JSON avec remplissage) était une solution courante pour contourner les restrictions des requêtes inter-domaines, notamment avec les anciens navigateurs ou certaines API.

JSONP contourne la politique de même origine en exploitant ingénieusement l’autorisation accordée par les navigateurs pour charger des balises <script> depuis n’importe quel domaine.

JSONP : le mécanisme

Voici comment fonctionne JSONP :

  • Vous créez dynamiquement une balise <script> et définissez son attribut src avec l’URL inter-domaines.
  • Le serveur, qui s’attend à recevoir une requête JSONP, enveloppe ses données JSON dans un appel de fonction, appelé « remplissage ».
  • Le navigateur exécute ce script et appelle une fonction définie globalement dans votre page, en lui transmettant les données comme argument.

JSONP : implémentation avec jQuery

jQuery simplifie considérablement l’implémentation de JSONP. Il vous suffit de spécifier dataType: "jsonp" dans votre appel $.ajax().

jQuery se charge automatiquement de créer la balise <script> dynamique, de générer un nom de fonction de rappel unique et de l’exécuter lorsque la réponse arrive.

$.ajax({
  url: "https://api.example.com/jsonp-data?callback=?", // Server must support JSONP
  dataType: "jsonp",
  success: function(data) {
    console.log("JSONP success:", data);
  },
  error: function(jqXHR, textStatus, errorThrown) {
    console.error("JSONP Error:", textStatus, errorThrown);
  }
});

CORS ou JSONP : principales différences

Bien que ces deux mécanismes répondent aux problèmes inter-domaines, CORS et JSONP ont des caractéristiques distinctes :

  • CORS : standard moderne, utilise des en-têtes HTTP, sécurisé, prend en charge toutes les méthodes HTTP et nécessite une configuration côté serveur.
  • JSONP : ancienne solution de contournement, utilise des balises <script>, est moins sécurisé, accepte uniquement les requêtes GET, fonctionne côté client et nécessite que le serveur enveloppe la réponse.

Vérification rapide : inter-domaines

Lesquelles des affirmations suivantes sont TRUE concernant les requêtes AJAX inter-domaines ?

Récapitulatif : maîtriser les requêtes inter-domaines

Vous avez appris à contourner la politique de même origine pour les requêtes AJAX inter-domaines !

  • CORS est le standard moderne et sécurisé : il s’appuie sur des en-têtes HTTP côté serveur pour accorder les autorisations.
  • JSONP est une ancienne solution de contournement, moins sécurisée, destinée aux requêtes GET et utilisant des balises <script> dynamiques.

Privilégiez toujours CORS lorsque cela est possible, car cette solution est plus sécurisée et plus flexible. JSONP est principalement réservé aux systèmes anciens ou à certains cas particuliers.

Gratuit pour commencer

Apprends JavaScript avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
22
Leçons
48

Questions Fréquemment Posées

La leçon « AJAX interdomaines (CORS/JSONP) » est-elle gratuite ?

Oui — le texte complet de « AJAX interdomaines (CORS/JSONP) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours jQuery Academy, passe à CoddyKit PRO. Le cours jQuery Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « AJAX interdomaines (CORS/JSONP) » ?

Comprenez et appliquez les techniques permettant d’effectuer des requêtes AJAX interdomaines avec JSONP ou de configurer les en-têtes CORS sur le serveur pour échanger des données en toute sécurité. Tu pratiques jQuery Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer jQuery Academy ?

Aucune expérience préalable n'est requise. jQuery Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.

Combien de temps prend la leçon « AJAX interdomaines (CORS/JSONP) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon jQuery Academy ?

Oui. Chaque leçon jQuery Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration efficace des requêtes AJAX
  2. Gestion des erreurs et des réussites AJAX
  3. AJAX interdomaines (CORS/JSONP)
← Retour à jQuery Academy