Comment les services Web distants peuvent-ils être utilisés à partir d'un script côté client? [fermé]

StackOverflow https://stackoverflow.com/questions/324771

Question

D'après ce que j'ai compris, en raison de la ". politique d'origine identique " Dans les navigateurs actuels, il est impossible d'obtenir des données d'un XmlHttpRequest envoyé à un domaine différent du domaine d'origine du code Javascript.

Je n'ai pratiquement aucune expérience en la matière. Je ne comprends donc pas si les services Web sont inutilisables à partir de Javascript. Cela signifie-t-il que les applications Web dotées de la fonctionnalité Ajax peuvent uniquement interagir avec elles-mêmes sans faire appel à des services fournis par d'autres domaines? Comment & Quot; mash-ups & Quot; travail ? Je suppose que les services sont consommés côté serveur, puis les données sont transmises au client via des appels Ajax locaux. Je ne sais pas.

La seule façon dont je puisse imaginer de consommer des services côté client serait de récupérer un fichier Javascript directement du domaine du service Web cible via une balise <script>, puis d'utiliser son API pour interagir avec le domaine distant.

Quelqu'un peut-il m'éclairer?

Était-ce utile?

La solution

Dans votre question, vous avez mentionné le & script > tour. JSONP est basé sur cela. Il a été officiellement proposé il y a presque 3 ans par Bob Ippolito Cela ne vous donne pas le droit de parler à l'origine du script & # 8212; l'origine est définie par votre page Web, et non par quoi d'autre. Cela fonctionne uniquement parce que le serveur encapsule JSON dans une fonction de calback, qui devrait être définie dans votre code et qui sera exécutée par & Lt; script & Gt; lorsqu'il est chargé. L’exemple le plus célèbre de JSONP serait les services Yahoo, y compris Flickr.

Une autre technique consiste à utiliser window.name pour transférer les informations. Cette technique a été détaillée par Kris Zyp il y a quatre mois . De plus, son article compare le transport window.name avec JSONP. Je ne connais aucun fournisseur de services de premier plan qui prend en charge ce nouveau transport. Évidemment, cela changera avec le temps.

Bien sûr, je devrais mentionner le prochain Microsoft XDomainRequest . Il est prévu d’être livré avec IE8, et aucun autre fournisseur ne s’est engagé à le prendre en charge, mais il a été présenté pour être inclus dans HTML 5. XDR est une fonctionnalité utile, mais j’ai le sentiment qu’elle sera modifiée à plusieurs reprises avant d’être mise à jour. accepté.

Si vous avez consulté les liens, vous savez probablement maintenant que toutes ces méthodes nécessitent un certain niveau de coopération de la part d’un serveur tiers. Vous ne pouvez pas utiliser des services aléatoires à volonté. Si vous devez utiliser un service qui ne coopère pas, la seule solution consiste à le remplacer par votre propre serveur avec tous les problèmes associés: légalité douteuse, performances réduites, charge accrue sur votre serveur, nombre réduit de connexions entre le navigateur de l'utilisateur et votre serveur, et ainsi de suite.

Autres conseils

Jetez un coup d’œil à JSONP, qui utilise la même politique d’origine en utilisant à peu près l’approche que vous décrivez. Assurez-vous juste de faire confiance à son origine.

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