Anforderungen:
Domain A hat die Seite a.html, die einen Iframe enthält, der die Seite b.html der Domain B enthält. Jetzt müssen wir den Wert eines Textfelds auf Seite a.html über eine Schaltfläche auf a.html an b.html übergeben . Das Textfeld der Seite.
Hinweis: b.html ist hier eine HTML-Webseite und kann keine von anderen Websites geposteten Werte empfangen. Daher können Sie die direkte Post-Methode nicht zum Übergeben von Werten verwenden. Wenn die empfangende Seite jedoch b.aspx oder b.asp ist Kannst du schon nicht direkt posten? Die Antwort lautet: Ja, das ist zwar möglich, aber b.asp oder b.aspx müssen aktualisiert werden. Wie können wir die Elemente oder Werte der empfangenden Seite dynamisch ändern, ohne sie zu aktualisieren? (Die lokalen Projekte von IE können domänenübergreifenden Zugriff erreichen, der domänenübergreifende Zugriff vom externen Netzwerk wird jedoch standardmäßig verweigert. Lokale FireFox-Projekte und domänenübergreifender Zugriff vom externen Netzwerk werden verweigert.)
Prinzip:
Der Browser verbietet den domänenübergreifenden Zugriff Datenzugriff, aber der Browser verhindert nicht die domänen- und rahmenübergreifende Übertragung von Beitragswerten. Wir können in Domäne A im Frame einer Seite in Domäne B posten und dann die Frame-Seite von Domäne B verwenden, um den Datenzugriff in dieser Domäne zu erreichen. Dies ist eigentlich ein kleiner Trick in HTML-Anwendungen, der eine domänenübergreifende Datenübermittlung ermöglicht, ohne dass andere fortgeschrittene Kenntnisse erforderlich sind.
Methode:
Fügen Sie zwei Seiten in Domäne B hinzu, um einen domänenübergreifenden Datenzugriff zu erreichen: post.aspx und main.aspx.
Die Seitenbeziehung ist wie folgt. a.html in Domäne A enthält einen Frame. Die Frame-Seitenadresse ist main.aspx in Domäne B. main.aspx ist ein Frameset, das zwei Frames enthält, (frmMain)b.html und (frmPost)post .aspx.
.a.html der Domäne 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 >
Main der Domäne B .aspx:
<frameset rows="*,0" frameborder="no" border="0" framespacing="0">
<frame src="b.html" name="frmMain">
<frame src= "post. aspx" name="frmPost">
</frameset>
Wir speichern zunächst die an Domäne B zu übergebenden Daten im Format a.html und posten sie dann an post.aspx in Domäne B.
Zu diesem Zeitpunkt empfängt post.aspx den Wert und führt dann den übergeordneten Frame in dieser Domäne aus um auf b.html zuzugreifen.
string cmd = Request.Form["cmd"];
if (null != cmd && string.Empty != cmd)
{
Response.Write("<script language="JavaScript" for="window" event= "onload"> if (parent && parent.frames["frmMain"]) {Fügen Sie hier den Ausführungscode zur Steuerung von b.html hinzu} </script> ");
}
Es ist nicht schwer, das Überspringen zu finden Hier werden Frames verwendet (das heißt, eine Frame-Ebene wird in die Mitte gesprungen), um einen domänenübergreifenden Datenzugriff zu erreichen. Das heißt, auf den Hilfsrahmen des Rahmens posten.
Nachtrag:
Dieses Beispiel ist lediglich eine Lösung für den domänenübergreifenden Zugriff unter bestimmten Umständen, die für Sie hilfreich sein kann. Da die Methode einfach ist, weist ihre Anwendung viele Einschränkungen auf. (Ich denke jedoch, dass dies Ajax sehr ähnlich ist. Die Seite wird nicht aktualisiert und die serverseitige Datenverarbeitung ist ebenfalls abgeschlossen^o^).
Zugehörige Webtextmaterialien:
Domainübergreifende Zugriffslösung für Webanwendungen.
Freunde, die Ajax für mehrere Websites entwickelt haben, wissen, dass wir Ajax verwenden möchten, um bestimmte Inhalte auf Website B abzurufen, wenn wir auf Website A sind sich nicht in derselben Domäne befindet, sodass es zu domänenübergreifenden Zugriffsproblemen kommt. Das domänenübergreifende Zugriffsproblem von Ajax ist ein häufiges Problem, auf das bestehende Ajax-Entwickler stoßen.
Der IE wickelt den domänenübergreifenden Zugriff ab, indem er ein Warnfeld anzeigt, um den Benutzer daran zu erinnern. Wenn der Benutzer die Website als vertrauenswürdige Website angibt oder die Sicherheitsstufe herabsetzt, werden Sie vom IE nicht an dieses Problem erinnert.
Wenn FireFox und andere Nicht-Microsoft-Browser auf domänenübergreifenden Zugriff stoßen, besteht die Lösung darin, den Zugriff zu verweigern.
Manche Leute sagen, dass der IE ein Mainstream-Browser ist, solange er normal verwendet werden kann. Dies ist eine schlechte Aussage, obwohl der IE damit umgehen kann, gibt es Voraussetzungen: Entweder macht sich der Benutzer die Mühe, auf „Ja“ zu klicken, nachdem das Warnfeld auf der Seite angezeigt wird (durch Klicken auf „Nein“ wird der Ajax-Aufruf nicht ausgeführt). Website als vertrauenswürdige Website. Diese beiden Ansätze sind in Unternehmensverwaltungssystemanwendungen relativ häufig, da Systemadministratoren administrative Mittel einsetzen können, um das Benutzerverhalten sicherzustellen. Für die Website- oder Portalentwicklung im Internet funktioniert dieser Ansatz jedoch nicht.
Ich bin kürzlich auf dieses Problem gestoßen und musste nach dem domänenübergreifenden Zugriff einige Spezialeffekte im Hauptfenster anzeigen. Ich habe durch ständige Versuche und Kompatibilitätstests in verschiedenen Browsern mehrere mögliche Lösungen gefunden:
1. Web-Proxy-Methode . Das heißt, die domänenübergreifenden Zugriffsanfragen auf Website B, die generiert werden, wenn der Benutzer Website A besucht, werden an die angegebene Seite von Website A gesendet, und die Seite schließt die Interaktion anstelle der Benutzerseite ab, wodurch entsprechende Ergebnisse zurückgegeben werden. Diese Lösung kann die meisten in dieser Phase denkbaren domänenübergreifenden Zugriffsprobleme lösen, erfordert jedoch, dass Website A Web-Proxy-Unterstützung bietet. Daher müssen Website A und Website B eng zusammenarbeiten und der Server bei jedem Interaktionsprozess von Website A Die Belastung steigt und der Sitzungsstatus kann nicht im Namen des Benutzers gespeichert werden.
2. On-Demand-Methode. Das Portal von MYMSN verwendet diese Methode, bei MYMSN treten jedoch keine domänenübergreifenden Zugriffsprobleme auf. Steuern Sie die Generierung von Skript-Tags dynamisch und schließen Sie den Aufruf domänenübergreifender Seiten ab, indem Sie das src-Attribut des Skript-Tags ändern. Der Fehler bei dieser Lösung besteht darin, dass das src-Attribut des Skripts die get-Methode verwendet, um den Aufruf abzuschließen. Wenn die während der Anforderung übergebene Zeichenfolge zu groß ist, wird sie möglicherweise nicht ordnungsgemäß ausgeführt. Diese Lösung eignet sich jedoch sehr gut für Aggregationsportale.
3. Iframe-Methode. Ich habe einen Beitrag über den domänenübergreifenden Zugriff von Waking up on javaeye überprüft. Er erwähnte, dass er das Problem des domänenübergreifenden Zugriffs mithilfe von iframe gelöst hatte. Es ist zwar möglich, iframe für die Datenübermittlung und -erfassung zu verwenden, aber da das übergeordnete Fenster und das untergeordnete Fenster nicht interagieren können (bei domänenübergreifendem Zugriff wird diese Interaktion abgelehnt), kann der Effekt auf das übergeordnete Fenster nicht abgeschlossen werden.
(Ich habe diesen Artikel gefunden, bitte fügen Sie die Adresse hinzu: http://www.javaeye.com/topic/15641 )
4. Lokale Dump-Methode des Benutzers: Der IE selbst verlässt sich auf die Eigenschaften der Windows-Plattform, um uns eine iframe-basierte Bereitstellung bereitzustellen Die Lösung zur „Umgehung“ des Speichers besteht darin, dass Daten zwischen zwei Fenstern über die Windows-Zwischenablage auf dem Client übertragen werden können. Sie müssen lediglich das Intervall auf der Seite festlegen, die die Daten für die Abfrage empfängt, und das Intervall nach dem Abrufen löschen Ergebnis. . Aufgrund der Plattformunabhängigkeit von FF wird die Zwischenablagemethode nicht unterstützt. Außerdem wurde die Plug-In-Schwachstelle in früheren Versionen von FF behoben, sodass FF die geheime Durchquerung des Speichers nicht abschließen kann. Da FF keine Unterstützung für Dateivorgänge bietet (die Domänenübergreifende Datenübertragung kann nicht über Cookies abgeschlossen werden), kann diese technische Methode nur im IE verwendet werden.
5. Meine eigene Methode zur Lösung dieser Art von Problem: Durch die Kombination der vorherigen Methoden fordern Sie beim Besuch von Website A zunächst Website B auf, die Datenverarbeitung abzuschließen, und erhalten dann die erforderlichen Ergebnisse basierend auf der zurückgegebenen Identifikation. Die Mängel dieser Methode liegen ebenfalls auf der Hand. Die Auslastung von Website B steigt. Der Vorteil besteht darin, dass auch die Sitzung aufrechterhalten wird und die Interaktionsfähigkeit zwischen den Seiten von Website A und Website B verbessert wird. Am wichtigsten ist, dass diese Lösung alle meine Anforderungen erfüllt.
Zusammenfassend empfehle ich unter den oben genannten Optionen am meisten die On-Demand-Methode. Diese Methode kann die meisten Ihrer Probleme lösen, ohne eine große Datenmenge zu übermitteln.
Adresse der domänenübergreifenden Zugriffslösung für Webanwendungen: http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html