2010-12-10 5 views
0

J'ai besoin de récupérer des données XML à partir d'une servlet intersite. Je sais que je ne peux pas le faire directement, et que certaines solutions de contournement sont nécessaires.

En ce moment j'ai résolu le problème en utilisant un petit script PHP basé sur cUrl qui agit comme un proxy, here il y a le code que j'utilise. Cette solution fonctionne réellement, mais présente quelques problèmes de réactivité (jusqu'à 3 fois plus lent que l'accès direct à la ressource via le navigateur), ce qui rend les requêtes AJAX inutiles.

J'ai donc besoin d'un moyen plus rapide de récupérer des données XML, en passant à JSONP uniquement en tant que ratio extrema. J'ai lu à propos de Partage de ressources inter-origine, cela peut-il m'aider d'une certaine façon? Existe-t-il un moyen rapide d'accéder au XML intersite?Quel est le moyen le plus rapide pour récupérer le XML intersite en utilisant javascript?

Répondre

0

Je pense que la façon plus rapide est de charger des données en tant que script js, quelque chose comme:

dataScript = document.createElement('script'); 
dataScript.type = 'text/javascript'; 
dataScript.src = 'http://www.externaldomain.com/remotescript.php?somevars=here'; 
var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(dataScript, s); 

Lorsque le script distant pourrait être en fait un script côté serveur envoyer des données comme text/javascript. Le contenu peut être JSON, des objets ou autre. Des frameworks comme jQuery ou Mootools peuvent vous donner encore plus de contrôle (ex: savoir quand le script est chargé). En fonction de vos données, vous pouvez également renforcer le script côté serveur distant.

+0

Si j'ai bien compris, vous suggérez d'intégrer le script qui génère les données XML dans la page et d'appeler le script de ma page Web pour récupérer le XML. Je n'ai pas pensé à cela mais la servlet génère les données dont j'ai besoin à la suite du script .jsp, puis-je l'intégrer? Et, plus important, ai-je mal compris? Aussi, à quoi sert la dernière déclaration? – LucretiusT

+0

@LucretiusT oui, les données sont enveloppées dans du code js réel injecté dans le corps du document. Bien sûr, vous pouvez le faire dans jsp (ou tout autre langage côté serveur) MAIS vous devez formater la sortie dans une langue js valide et définir les en-têtes comme "texte/javascript". La dernière déclaration concerne la sécurité, car n'importe qui peut potentiellement récupérer ces données de n'importe quel domaine comme vous le faites. – achairapart

Questions connexes