Maison  >  Questions et réponses  >  le corps du texte

javascript - jsonp ne peut utiliser que get Reason

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!

阿神阿神2688 Il y a quelques jours1246

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-06-12 09:30:42

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

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-12 09:30:42

    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

    répondre
    0
  • 黄舟

    黄舟2017-06-12 09:30:42

    Semblable à l'ajout dynamique d'un code js à votre page, pensez-vous que le fichier js peut être publié ?

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-12 09:30:42

    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.

    .

    répondre
    0
  • 代言

    代言2017-06-12 09:30:42

    En raison de la balise <script>, seul GET est pris en charge

    répondre
    0
  • Annulerrépondre