À retenir
- Technique permettant de contourner les restrictions de sécurité entre domaines.
- Fonctionne en détournant l'usage de la balise HTML
<script>. - Est devenu obsolète avec l'arrivée du standard CORS.
- Supporte uniquement les requêtes de type
GET.
Le JSONP est une astuce technique qui permet à une page web de récupérer des données depuis un serveur situé sur un autre domaine, contournant ainsi la barrière de sécurité naturelle des navigateurs appelée « politique de même origine ». C'est un peu comme si, pour contourner l'interdiction de se faire livrer un repas extérieur dans un hôtel, vous demandiez au livreur de se déguiser en employé de l'hôtel pour entrer sans encombre.
Étymologie
Sigle de JSON with Padding (JSON avec remplissage). Le terme « padding » fait référence au fait que les données JSON pures sont enveloppées (ou « rembourrées ») à l'intérieur d'un appel de fonction JavaScript pour être traitées par le navigateur.
Exemples d'usage
- Un widget météo installé sur un blog qui va chercher les prévisions en temps réel sur le serveur d'un service spécialisé.
- Une ancienne barre de recherche qui suggère des résultats provenant d'un moteur de recherche tiers au fur et à mesure de la saisie.
Cas d'usage
Utilisé historiquement dans le développement web pour permettre l'échange de données entre sites différents (cross-domain) à une époque où les navigateurs bloquaient strictement ces interactions pour des raisons de sécurité.
Bonnes pratiques
Il est aujourd'hui fortement recommandé de ne plus utiliser JSONP. Il présente des risques de sécurité majeurs, notamment des failles XSS (exécution de code malveillant), car vous faites confiance aveuglément au script envoyé par le serveur tiers. De plus, il ne permet pas d'envoyer des données via la méthode POST, limitant son usage aux simples lectures d'informations.
Synonymes
Antonymes
Conseil
Si vous débutez et que vous rencontrez un tutoriel parlant de JSONP, vérifiez sa date de publication. Pour tout projet moderne, tournez-vous vers les API Fetch ou Axios configurées avec CORS pour gérer vos échanges de données entre différents serveurs.
Questions fréquentes
Quelle est la différence entre JSON et JSONP ?
Le JSON est un format de données brut, tandis que le JSONP est une méthode de communication qui enveloppe ces données dans une fonction exécutable.
Par quoi remplacer le JSONP aujourd'hui ?
Par le standard CORS (Cross-Origin Resource Sharing), qui est bien plus sécurisé et flexible.
Pourquoi JSONP est-il dangereux ?
Parce qu'en appelant un script externe, vous lui donnez l'autorisation d'exécuter n'importe quel code sur votre propre page web.