2010-07-23 12 views
0

J'ai une configuration typique pour le domaine croisé.Cross Domain JavaScript avec DHTML HTC

site1.company.com

site2.company.com

Application principale est en cours d'exécution hors de site1.company.com. Essayer d'obtenir une communication entre la trame parent de site1 et la trame enfant de site2

Le site 1 et le site 2 définissent respectivement document.domain = 'company.com';

La communication fonctionne très bien dans les deux sens, Toutefois, la trame parent de site1 n'était plus en mesure de communiquer avec le reste de l'application site1 en raison de la même stratégie d'origine. J'ai ajouté la même propriété document.domain à chaque page Web du site1.

Le problème auquel je suis confronté est que tous nos 20 fichiers HTC ne fonctionnent plus. J'ai essayé de placer le document.domain dans la balise de script sur le HTC mais ceci a jeté un message d'accès refusé.

Si vous tentez d'utiliser le HTC sans document.domain, la même stratégie d'origine échoue et les appels javascript HTC rejettent l'accès refusé.

Y at-il quelque chose de spécial que je dois faire pour activer document.domain dans un fichier HTC? Est-ce faisable?

Répondre

1

Jetez un oeil à http://easyxdm.net/, il vous permettra d'intégrer des cadres que vous pouvez communiquer librement et en toute sécurité avec les limites du domaine.

Ce sera probablement plus facile que de faire des recherches avec document.domain (ce qui provoque toutes sortes de problèmes).

Cela ne fonctionnera probablement pas entre HTML et HTC, mais il sera entre les pages sur les domaines distincts.

+0

Essayé de mettre en œuvre cela, principalement en utilisant la connexion socket, Cependant, cela semblait très sensible à la synchronisation, n'a pas pu passer des messages de manière fiable. – Keibosh

+0

Ensuite, vous devez utiliser le mauvais - la pile de transport garantit la livraison. Avez-vous créé les objets easyXDM * avant que le DOM soit entièrement chargé? En outre, y a-t-il eu des erreurs signalées? –

+0

Aucune erreur n'a été levée, c'était comme si la connexion n'était tout simplement jamais établie, je vois le code onReady s'éteindre mais rien n'est jamais reçu à l'autre bout. Je pense que cela peut avoir quelque chose à voir avec le cadre de notre application. Toutes les fenêtres de notre application sont traitées par un HTC, je pense que cela cause le problème. – Keibosh