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 du injection, 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 le server 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é...?

Était-ce utile?

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

http://neil.fraser.name/news/2009/07/27/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top