Y a-t-il des raisons de ne pas utiliser JSONP pour les requêtes AJA~X ?
-
09-06-2019 - |
Question
Si vous construisez un AJA~Xy
application, y a-t-il des inconvénients à utiliser JSONP
demandes/réponses même si vous n’en prévoyez aucune cross-domain
demandes ?
La seule chose à laquelle je peux penser, c'est qu'il y a quelques octets supplémentaires pour le wrapper de rappel...
Modifier:
j'ai trouvé ce ce qui suggère également security and error handling
comme problèmes potentiels...
Il n'y a pas de gestion des erreurs.Le
script injection
soit ça marche, soit ça ne marche pas.S'il y a une erreur duinjection
, cela atteindra la page, et à moins d'un gestionnaire d'erreurs à l'échelle de la fenêtre (mauvais, mauvais, très mauvais), vous devez être sûr que la valeur de retour est valide sur leserver side
.
je ne pense pas error handling
c'est vraiment un problème...la plupart d'entre nous utiliseraient une bibliothèque pour générer le JSON
...la bonne forme de ma réponse n'est pas un problème pour cette question.
et sécurité :
Il existe des documents sur le Web qui peuvent aider, mais à titre de vérification rapide, je vérifierais le référent dans le
server side
scénario.
il semble que ce soit un problème potentiel avec tout type de réponse...certainement, il n'y a rien d'unique à JSONP
dans le domaine de la sécurité...?
La solution
Inconvénient?C'est assez limité - vous déclenchez une requête "GET" et récupérez un script exécuté.Vous n'obtenez pas de gestion des erreurs si votre serveur génère une erreur, vous devez donc également envelopper toutes les erreurs dans JSON.Vous ne pouvez pas vraiment annuler ou réessayer la demande.Vous êtes à la merci des différentes opinions des auteurs du navigateur sur le comportement "correct" des fichiers générés dynamiquement. <script>
Mots clés.Le débogage est un peu plus difficile.
Cela dit, je l'ai utilisé à l'occasion et je n'ai pas souffert.YMMV.
Autres conseils
Récupérer les erreurs lorsqu'un appel jsonp échoue est possible.
http://code.google.com/p/jquery-jsonp/
J'espère que cela aide.
Je dirais que la plus grande limitation pourrait être la surcharge supplémentaire liée au fait que le navigateur restitue une balise de script pour appeler le serveur.De plus, JSONP est-il vraiment considéré comme AJAX puisqu'il n'utilise pas réellement l'objet XMLHttpRequest ?
Voici un autre élément que vous voudrez peut-être considérer avec JSONP.fuites de mémoire possibles..