5

Voici ma situation:cross domain XMLHttpRequest

J'ai une machine à Webserver, machine client, et une troisième machine exécutant un programme qui écoute XMLHttpRequests.

Le client accède au serveur Web à partir de l'ordinateur client, apporte quelques modifications, puis clique sur Enregistrer. À ce stade, les données sont renvoyées au serveur Web et à la troisième machine. Tout cela est fait en utilisant Javascript et l'objet XMLHttpRequest. La publication sur le serveur Web fonctionne correctement, mais la publication sur la troisième machine ne fonctionne pas, car elle avait une adresse IP/un domaine différent.

Comment est-ce que je peux faire ce travail? Client machine -> Troisième machine ne fonctionne pas, car son sur un domaine différent Webserver machine -> Troisième machine ne fonctionne pas, à cause de problèmes de pare-feu

Toutes les idées sont grandement appréciées!

Répondre

3

Ce que vous utilisez est le Same origin policy, pas de problèmes de pare-feu.

Si les machines partagent un domaine de niveau supérieur, vous pouvez set their document.domain properties to match:

Deux sites qui partagent un haut niveau commun domaine peut choisir de communiquer malgré à défaut le contrôle « même hôte » par définir mutuellement leur propriété DOM document.domain respective au même fragment qualifié qualifié de leur nom d'hôte actuel.

Sinon, vous devrez peut-être configurer votre premier hôte à proxy la demande à l'autre hôte.

2

Vous pouvez également utiliser le iframe hack. Un iframe hébergé par le deuxième domaine peut être rendu dans une page hébergée par le premier domaine, et le window object pour l'iframe sera accessible depuis le contexte de la page parent.

+1

Cela ne semble pas être une mauvaise idée, je pense que vous pouvez postMessage() entre les images dans ce cas aussi. – erikvold

1

Une autre option (qui est certes un peu techie) est d'utiliser YQL si les données ne sont pas sensibles. Vous pouvez également utiliser YQL & JSON-P pour extraire des données d'autres domaines.

3

Vous pouvez implémenter CORS (Cross-Origin Resource Sharing) sur votre serveur.

Les versions actuelles des principaux navigateurs de bureau l'ont soutenu pendant un certain temps, Opera et Explorer 10 étant les derniers à ajouter le support.

Je ne suis pas certain de la popularité de CORS dans les navigateurs mobiles à l'heure actuelle.