javascript - jsonp ne peut utiliser que get Reason
阿神
阿神 2017-06-12 09:28:42
0
5
1259

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!

阿神
阿神

闭关修行中......

répondre à tous(5)
Ty80

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 :

jsonp({
    url: 'http://path/to/server/b',
    params: {A: a, B: b},
    success: function myCallback (response) {}
})

Que se passe-t-il dans les coulisses :

  1. 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ée

  2. Le serveur traite cette requête GET et renvoie la chaîne "myCallback('response value')"

  3. Une fois le script frontal chargé, il est réellement exécuté dans le scriptmyCallback('response value')

  4. La demande inter-domaines a-t-elle été complétée ?

  5. 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.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="jquery.min.js"></script>
</head>
<body>
    
</body>
</html>

Le navigateur doit analyser cette page Web après l'avoir obtenue, et l'analyser pour

<script src="jquery.min.js"></script>

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!