Exigences :
le domaine A a la page a.html, qui contient une iframe contenant la page b.html du domaine B. Nous devons maintenant transmettre la valeur d'une zone de texte de la page a.html à b.html via un bouton sur a.html . La zone de texte de la page.
Remarque : b.html est ici une page Web HTML et ne peut pas recevoir de valeurs publiées par d'autres sites Web. Vous ne pouvez donc pas utiliser la méthode de publication directe pour transmettre des valeurs. Cependant, si la page de réception est b.aspx ou b.asp, vous. Je ne peux pas poster directement. La réponse est oui, c'est effectivement possible, mais b.asp ou b.aspx doivent être actualisés. Comment modifier dynamiquement les éléments ou les valeurs de la page réceptrice sans actualiser ? (Les projets locaux d'IE peuvent obtenir un accès inter-domaine, mais l'accès inter-domaine depuis le réseau externe est refusé par défaut. Les projets locaux FireFox et l'accès inter-domaine depuis le réseau externe sont refusés.)
Principe :
Le navigateur interdit l'accès inter-domaine. Accès aux données, mais le navigateur n'interdit pas le transfert de valeur de publication entre domaines et entre cadres. Nous pouvons publier dans le domaine A dans le cadre d'une page du domaine B, puis utiliser la page cadre du domaine B pour accéder aux données dans ce domaine. Il s'agit en fait d'une petite astuce dans les applications HTML, qui permet de soumettre des données entre domaines sans utiliser d'autres connaissances avancées.
Méthode :
ajoutez deux pages dans le domaine B pour obtenir un accès aux données inter-domaines, post.aspx et main.aspx.
La relation entre les pages est la suivante. a.html dans le domaine A contient un cadre. L'adresse de la page du cadre est main.aspx dans le domaine B. main.aspx est un ensemble de cadres contenant deux cadres, (frmMain)b.html et (frmPost)post. .aspx
.a.html du domaine A :
<form action=" http://www.b**.com/post.aspx " method="post" target="frmPost">
<input id="cmd" type=" text" size="20">
<input type="submit">
</form>
<iframe src=" http://www.b**.com/main.aspx"></iframe >
Principal du domaine B .aspx :
<frameset rows="*,0" frameborder="no" border="0" framespacing="0">
<frame src="b.html" name="frmMain">
<frame src= "post.aspx" name="frmPost">
</frameset>
Nous enregistrons d'abord les données à transmettre au domaine B sous la forme a.html, puis publions sur post.aspx dans le domaine B.
À ce stade, post.aspx reçoit la valeur, puis exécute le cadre parent dans ce domaine. pour accéder à b.html.
string cmd = Request.Form["cmd"];
if (null != cmd && string.Empty != cmd)
{
Response.Write("<langage de script="JavaScript" for="window" event= "onload"> if (parent && parent.frames["frmMain"]) {Ajoutez le code d'exécution pour contrôler b.html ici} </script> ");
}
Il n'est pas difficile de trouver ce saut à travers frames est utilisé ici (c'est-à-dire qu'une couche de frame est sautée au milieu) pour obtenir un accès aux données inter-domaines. C'est-à-dire, publiez-le sur le sous-châssis du cadre.
Post-scriptum :
cet exemple n'est qu'une solution pour l'accès entre domaines dans certaines circonstances particulières, qui peut vous être utile. La méthode étant simple, son application présente de nombreuses limites. (Cependant, je pense que cela ressemble beaucoup à ajax. La page n'est pas actualisée et le traitement des données côté serveur est également terminé ^o^).
Documents Web associés :
Solution d'accès inter-domaines pour les applications Web.
Les amis qui ont développé Ajax sur plusieurs sites Web savent que si nous sommes sur le site Web A, nous souhaitons utiliser Ajax pour obtenir un contenu spécifique sur le site Web B, s'il s'agit du site Web A et du site Web B. n'est pas dans le même domaine, des problèmes d'accès entre domaines surviennent donc. Le problème d'accès inter-domaines d'Ajax est un problème courant rencontré par les développeurs Ajax existants.
IE gère l'accès entre domaines en affichant une boîte d'avertissement pour le rappeler à l'utilisateur. Si l'utilisateur inclut le site Web comme site Web de confiance ou abaisse le niveau de sécurité, IE ne vous rappellera pas ce problème.
Lorsque FireFox et d'autres navigateurs non Microsoft rencontrent un accès inter-domaines, la solution consiste à refuser l'accès.
Certaines personnes disent qu'IE est un navigateur grand public, à condition qu'il puisse être utilisé normalement. C'est une mauvaise déclaration. Bien qu'IE puisse le gérer, il existe des conditions préalables. Soit l'utilisateur prend la peine de cliquer sur Oui après que la boîte d'avertissement s'affiche sur la page (cliquer sur Non n'exécutera pas l'appel Ajax), soit l'utilisateur inclut le message d'erreur. site Web en tant que site de confiance. Ces deux approches sont relativement courantes dans les applications de systèmes de gestion d'entreprise, car les administrateurs système peuvent utiliser des moyens administratifs pour garantir le comportement des utilisateurs. Mais pour le développement de sites Web ou de portails sur Internet, cette approche ne fonctionne pas.
J'ai rencontré ce problème récemment. J'avais besoin de faire apparaître des effets spéciaux sur la fenêtre principale après l'accès inter-domaines. J'ai recherché des informations et trouvé plusieurs solutions réalisables grâce à des tentatives constantes et des tests de compatibilité dans différents navigateurs :
1. Méthode de proxy Web
.. Autrement dit, les demandes d'accès inter-domaines au site Web B générées lorsque l'utilisateur visite le site Web A sont soumises à la page désignée du site Web A, et la page termine l'interaction au lieu de la page utilisateur, renvoyant ainsi les résultats appropriés. Cette solution peut résoudre la plupart des problèmes d'accès entre domaines auxquels on peut penser à ce stade, mais elle nécessite que le site Web A fournisse un support de proxy Web. Par conséquent, le site Web A et le site Web B doivent coopérer étroitement, et chaque processus d'interaction, le serveur. du site Web A La charge augmente et l'état de la session ne peut pas être enregistré au nom de l'utilisateur.
2. Méthode à la demande. Le portail MYMSN utilise cette méthode, mais MYMSN n'implique pas de problèmes d'accès entre domaines. Contrôlez dynamiquement la génération des balises de script et complétez l'appel aux pages inter-domaines en modifiant l'attribut src de la balise de script. Le défaut de cette solution est que l'attribut src du script utilise la méthode get pour terminer l'appel. Si la chaîne transmise lors de la requête est trop grande, elle risque de ne pas s'exécuter correctement. Cependant, cette solution est très adaptée aux portails d’agrégation.
3. méthode iframe. J'ai vérifié un article sur l'accès inter-domaines en se réveillant sur javaeye. Il a mentionné qu'il avait résolu le problème d'accès inter-domaines en utilisant iframe. Il est en effet possible d'utiliser iframe pour la soumission et l'acquisition de données, mais comme la fenêtre parent et la fenêtre enfant ne peuvent pas interagir (en cas d'accès inter-domaines, cette interaction est rejetée), l'effet sur la fenêtre parent ne peut pas être complété.
(J'ai trouvé cet article, veuillez ajouter l'adresse : http://www.javaeye.com/topic/15641 )
4. Méthode de dump local de l'utilisateur : IE lui-même s'appuie sur les caractéristiques de la plate-forme Windows pour nous fournir un fichier iframe. , La solution consistant à utiliser la mémoire pour "contourner" est que les données peuvent être transmises entre deux fenêtres via le presse-papiers de Windows sur le client. Il vous suffit de définir l'intervalle du côté recevant les données pour l'interrogation et d'effacer l'intervalle après avoir obtenu l'intervalle. résultat. . L'indépendance de la plate-forme de FF détermine qu'il ne prend pas en charge la méthode du presse-papiers et la vulnérabilité du plug-in dans les versions précédentes de FF a été corrigée, de sorte que FF ne peut pas terminer le passage secret à travers la mémoire. Étant donné que FF ne prend pas en charge les opérations sur les fichiers (le transfert de données entre domaines ne peut pas être effectué via des cookies), cette méthode technique ne peut être utilisée que dans IE.
5. Ma propre méthode pour résoudre ce type de problème : en combinant les méthodes précédentes, lors de la visite du site Web A, demandez d'abord au site Web B de terminer le traitement des données, puis obtenez les résultats requis en fonction de l'identification renvoyée. Les inconvénients de cette méthode sont également évidents. La charge du site Web B augmente. L'avantage est que la session est également maintenue et que la capacité d'interaction entre les pages du site Web A et du site Web B est améliorée. Plus important encore, cette solution répond à tous mes besoins.
Pour résumer, parmi les options ci-dessus, je recommande particulièrement la méthode à la demande. Cette méthode peut résoudre la plupart de vos problèmes sans soumettre une grande quantité de données.
Adresse de la solution d'accès inter-domaines pour les applications Web : http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html