2010-02-15 4 views
2

Je m'excuse si cela a déjà été demandé. J'ai cherché mais je n'ai rien trouvé. C'est une limitation bien connue des requêtes AJAX (telles que jQuery $ .get) qu'elles doivent être dans le même domaine pour des raisons de sécurité. Et c'est une solution de contournement bien connue pour ce problème d'utiliser des iframes pour extraire du HTML arbitraire d'un autre site Web et ensuite vous pouvez inspecter le contenu de ce HTML en utilisant javascript qui communique entre l'iframe et la page parent.Alternatives à iframe pour charger le code HTML inter-site lors de l'utilisation de l'iPhone?

Cependant, cela ne fonctionne pas sur l'iPhone. Dans certains tests, j'ai trouvé que les iframes dans le navigateur de l'iPhone Safari affichent uniquement du contenu s'il s'agit du contenu du même site. Sinon, ils affichent une zone de contenu vide.

Y a-t-il un moyen de contourner ce problème? Existe-t-il d'autres alternatives à l'utilisation d'iframes qui me permettraient d'extraire le HTML de la page d'un autre domaine en javascript sur ma page?

Editer:
Une réponse a été mentionnée JSONP. Cela ne m'aide pas parce que d'après ce que je comprends, JSONP nécessite un support sur le serveur pour lequel je demande des données, ce qui n'est pas le cas.

Cette même réponse a mentionné la création d'un script proxy sur mon serveur et le chargement de données par là. Malheureusement, cela ne fonctionne pas dans mon cas. Le site auquel j'essaie de demander des données nécessite une connexion utilisateur. Et je ne veux pas que mon serveur connaisse les informations d'identification de l'utilisateur. J'espérais utiliser quelque chose de côté client afin que mon application n'ait pas besoin de connaître les informations d'identification de l'utilisateur sur l'autre site.

Je suis prêt à accepter qu'il n'y a aucun moyen d'accomplir ce que je veux faire sur l'iPhone. Je voulais juste le confirmer.

+0

Empêcher les sites Web de tiers d'accéder aux données du type qui doit être protégé par les informations d'identification de l'utilisateur est le point de la même politique d'origine. Si les données ne sont pas divulguées avec JSON-P, et vous n'avez pas les informations d'identification, alors vous n'avez pas de chance. – Quentin

+0

Merci David c'est un peu ce que j'ai craint/prévu. – RationalGeek

Répondre

2

Vous pouvez généralement pas inspecter le contenu d'un iframe à partir d'un autre domaine via JavaScript. Les réponses les plus courantes consistent à utiliser JSONP ou à faire en sorte que votre serveur d'origine héberge un script proxy pour récupérer le contenu interne pour vous. Compte tenu de vos révisions, sans modification ou support du site secondaire, vous ne serez certainement pas en mesure de faire ce que vous voulez via le navigateur de l'iPhone.

+0

Merci pour la réponse. J'ai regardé dans JSONP et hébergeant un script de proxy. Ni travailler dans ma situation particulière, je vais modifier ma question pour expliquer plus. – RationalGeek

0

« Dans certains tests, j'ai trouvé que iframes dans le navigateur iPhone Safari ne montrent que le contenu s'il est contenu à partir du même site »

J'ai trouvé la même chose. Est-ce documenté quelque part? Y at-il un travail autour? Cela ressemble à des normes web brisées pour moi, et je me demande s'il y a une solution.