Pourquoi jsonp ne peut utiliser que les requêtes get ? Est-ce pour certaines raisons de get, de publication ou pour d'autres raisons ? J'ai vérifié le document et il a dit que "cela est déterminé par les caractéristiques de la technologie elle-même". Parlez-moi de cela. À quoi fait référence la caractéristique elle-même ? Pouvez-vous l'expliquer en détail ? Merci beaucoup!
JSONP est un
【Demander un script JS et traiter le résultat de l'exécution de ce script comme des données】
.
Alors, pouvez-vous POSTER un script introduit via la balise script ?
(Si vous avez lu le code source de la bibliothèque JSONP, vous saurez que le code d'implémentation commun consiste en fait
document.createElement('script')
à générer une balise de script et à l'insérer dans le corps. Il n'y a pas de place pour définir le format de requête ici).Le code JS dans le nom de domaine A AJAX demande des données de serveur avec le nom de domaine B. Il s'agit d'une requête AJAX inter-domaines, ce qui n'est pas possible par défaut.
Mais il existe des endroits dans HTML où des requêtes inter-domaines peuvent être effectuées, telles que les balises de script img. Leurs attributs src pointent vers des adresses qui ne sont pas sous le nom de domaine A (c'est-à-dire inter-domaines).
Ensuite, quelqu'un a profité des caractéristiques ci-dessus, a choisi la fonctionnalité src dans le script qui peut obtenir du contenu sur tous les domaines et a développé un protocole de piratage comme JSONP. (Les requêtes dans src sont toutes GET)
Cela suppose que la requête JSONP est la suivante :
Que se passe-t-il dans les coulisses :
Splice une balise de script,
<script src="http://path/to/server/b?A=a&B=b&callbackFunctionName=myCallback"></script>
, pour déclencher une requête GET à l'adresse spécifiéeLe serveur traite cette requête GET et renvoie la chaîne "myCallback('response value')"
Une fois le script frontal chargé, il est réellement exécuté dans le script
myCallback('response value')
La demande inter-domaines a-t-elle été complétée ?
Est-il simplement possible d'utiliser GET
Semblable à l'ajout dynamique d'un code js à votre page, pensez-vous que le fichier js peut être publié ?
Supposons que l'adresse que vous avez demandée renvoie une page Web comme celle-ci.
Le navigateur doit analyser cette page Web après l'avoir obtenue, et l'analyser pour
Quand j'ai lu cette ligne de code, je savais qu'un fichier js était nécessaire ici, j'ai donc lancé une autre requête pour obtenir ce fichier js. Cette requête ne peut utiliser que la méthode GET, pas POST, tout comme vous entrez l'adresse dans le fichier. barre d'adresse du navigateur. C'est la même chose que d'appuyer sur Entrée pour entrer.
Le principe d'implémentation de JSONP est de créer une balise de script, puis de mettre l'adresse API qui doit être demandée dans src. Cela ne peut donc être que GET.
.En raison de la balise <script>, seul GET est pris en charge