2010-11-18 7 views
0

Je lis this article qui compare XML à JSON, et dans la section des commentaires, un utilisateur mentionne la nécessité d'utiliser un "proxy local" pour accéder à XML. Est-ce que quelqu'un peut expliquer ce qu'est un proxy local dans ce contexte?JSON vs XML - XML ​​nécessite-t-il un 'proxy local'? Qu'est-ce que c'est?

Je suppose qu'il veut dire Javascript, mais je suis ouvert à comprendre ce que les analyseurs sont disponibles dans d'autres langues (C#, etc ...)

+0

[AJAX ou AJAJ?] (Http://izlooite.blogspot.com/2010/05/ajax-or-ajax-xml-vs-json.html) –

Répondre

2

JavaScript a un Same Origin Policy qui vous empêche d'accéder au contenu d'autres domaines. Cela empêche l'objet XMLHttpRequest d'être en mesure de récupérer le contenu du fichier XML à partir de l'autre domaine. Un proxy local est juste un simple fichier qui redirige simplement la requête de votre domaine vers l'autre domaine et récupère le contenu. De cette façon, la même politique d'origine est respectée.

La raison pour laquelle JSON ne fonctionne pas dans la restriction est que les fichiers JavaScript, Image et CSS peuvent être référencés à partir d'autres domaines. Parce que les fichiers JavaScript peuvent être chargés à partir d'autres domaines, nous pouvons utiliser JSONP (JSON avec remplissage) pour obtenir le contenu.

La plupart des gens conviennent que JSONP n'est pas sécurisé, car tout contenu peut être injecté dans le fichier JavaScript. Vous devez juste faire confiance à votre source pour qu'elle n'injecte aucun mauvais contenu (annonces, popups, trucs de suivi, etc.) dans la page Web.

2

Ceci est lié à JSONP (comme l'utilisateur l'indique dans son commentaire) qui essentiellement définit la capacité de JavaScript à exécuter tout ce qui est fourni dans la source distante <script src="http://url.com/file"></script>, et donne à un navigateur la possibilité de récupérer des données à partir de sources distantes.

Je n'aime pas le terme JSONP moi-même, car vous pouvez aussi exécuter XML, donc le commentaire de l'utilisateur est réellement faux. Vous pouvez renvoyer quelque chose comme run('<some xml></some xml>') sur votre serveur, puis utiliser l'analyseur XML JavaScript intégré pour obtenir les données dont vous avez besoin - il n'est pas nécessaire que ce soit JSON.