Salut,
je ne sais pas si ce que je vais dire va te faire avancer, mais allons-y.
Habituellement, la balise <script> te permet d'exécuter du code d'un serveur tiers. C'est toi qui choisis l'URL du script, autrement dit tu « invites » le script sur ta page. Tu le fais car tu connais le contenu du script, et tu n'as pas à craindre que ce serveur t'attaque.
À l'inverse, le serveur n'est pas tenu de te faire confiance. En effet, n'importe qui peut appeler ce script depuis n'importe où, et le serveur ne sait pas qui utilise son script. Pour cette raison, il t'est impossible de manipuler le code source du script : le navigateur l'exécute, mais aucun mécanisme ne te permet de le récupérer. Voilà en quoi consistent les restrictions de la balise <script>.
JSONP signifie
JSON with Padding. Padding peut se traduire par
remplissage. Il s'agit d'un mécanisme de coopération entre le client et le serveur. Lorsque tu « invites » le script, tu précises en paramètre le nom d'une variable de tes propres scripts (en l'occurence
fctRappel). Alors, le serveur génère son contenu JSON, en le faisant précéder du nom de ta variable suivi du signe égal :
1 2 3 4 5 6
| <?php
// génération du JSON...
echo $_GET['callback'] . '=' . $json;
?> |
Ceci sera traduit comme une affectation par ton navigateur, ce qui aura pour effet de placer le contenu JSON dans ta variable. Autrement dit, le serveur
remplit ta variable.
Tout ça n'est possible que parce qu'il y a une entente entre le client et le serveur, et comme tu le vois, ça ne viole pas la sécurité du code source

Partager