要件:
ドメイン A にはページ a.html があり、このページにはドメイン B のページ b.html を含む iframe が含まれています。 ここで、a.html のボタンを介して、ページ a.html のテキスト ボックスの値を b.html に渡す必要があります。 . ページのテキスト ボックス。
注: ここでの b.html は HTML Web ページであり、他の Web サイトから投稿された値を受け取ることができないため、直接投稿メソッドを使用して値を渡すことはできません。ただし、受信ページが b.aspx または b.asp の場合は、値を渡すことができます。すでに直接投稿できませんか?答えは「はい」です。確かに可能ですが、b.asp または b.aspx を更新する必要があります。更新せずに受信ページの要素や値を動的に変更するにはどうすればよいでしょうか。 (IE のローカル プロジェクトはクロスドメイン アクセスを実現できますが、外部ネットワークからのクロスドメイン アクセスはデフォルトで拒否されます。FireFox ローカル プロジェクトと外部ネットワークからのクロスドメイン アクセスは拒否されます。)
原則:
ブラウザはクロスドメイン アクセスを禁止します
。データ アクセスですが、ブラウザーはクロスドメインおよびクロスフレームのポスト値の転送を禁止していません。ドメイン A でドメイン B のページのフレームに投稿し、ドメイン B のフレーム ページを使用してこのドメインでデータ アクセスを実現できます。これは実際には HTML アプリケーションにおけるちょっとしたトリックであり、他の高度な知識を使用せずにクロスドメインのデータ送信を実現します。
方法:
ドメイン B に 2 つのページ (post.aspx と main.aspx) を追加して、クロスドメイン データ アクセスを実現します。
ページの関係は次のとおりです。ドメイン A の a.html にはフレームが含まれています。フレーム ページのアドレスはドメイン B の main.aspx です。main.aspx は、(frmMain)b.html と (frmPost)post の 2 つのフレームを含むフレームセットです。 .aspx.
ドメイン A の a.html:
<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 >
メインドメイン B の .aspx:
<frameset rows="*,0" Frameborder="no" border="0" Framespacing="0">
<frame src="b.html" name="frmMain">
<frame src= "post.aspx" name="frmPost">
</frameset>
まず、ドメイン B に渡すデータを a.html 形式で保存し、次にドメイン B の post.aspx にポストします。
このとき、post.aspx は値を受け取り、このドメインの親フレームを実行します。 b.html にアクセスします。
string cmd = Request.Form["cmd"];
if (null != cmd && string.Empty != cmd)
{
Response.Write("<script language="JavaScript" for="window" events= "onload"> if (parent &&parent.frames["frmMain"]) {ここに b.html をコントロールする実行コードを追加します} </script> ");
}
このジャンプを見つけるのは難しくありませんここでは、クロスドメイン データ アクセスを実現するためにフレームが使用されています (つまり、フレームのレイヤーが中央でジャンプされます)。つまり、フレームのサブフレームに投稿します。
追記:
この例は、いくつかの特殊な状況下でのクロスドメイン アクセスに対する単なる解決策であり、役に立つかもしれません。この方法は単純であるため、その適用には多くの制限があります。 (ただし、これはajaxによく似ていると思います。ページは更新されず、サーバー側のデータ処理も完了します^o^)。
関連する Web テキスト資料:
Web アプリケーションのクロスドメイン アクセス ソリューション
複数の Web サイトで Ajax 開発を行った友人は、Web サイト A の場合、Web サイト A と Web サイト B の場合、Ajax を使用して Web サイト B の特定のコンテンツを取得したいことを知っています。は同じドメイン内にないため、クロスドメイン アクセスの問題が発生します。 Ajax のクロスドメイン アクセスの問題は、既存の Ajax 開発者が遭遇する一般的な問題です。
IE は、ユーザーに警告ボックスをポップアップ表示してクロスドメイン アクセスを処理します。ユーザーがその Web サイトを信頼できる Web サイトとして含めるか、セキュリティ レベルを下げている場合、IE はこの問題を通知しません。
FireFox およびその他の Microsoft 以外のブラウザがクロスドメイン アクセスに遭遇した場合、解決策はアクセスを拒否することです。
普通に使えるブラウザであればIEが主流だという人もいます。これは不適切なステートメントですが、IE では処理できますが、ページに警告ボックスが表示された後でユーザーがわざわざ [はい] をクリックするか、ユーザーがWeb サイトを信頼できるサイトとして登録します。システム管理者は管理手段を使用してユーザーの動作を保証できるため、これら 2 つのアプローチは企業管理システム アプリケーションでは比較的一般的です。しかし、インターネット上の Web サイトやポータルの開発では、このアプローチは機能しません。
最近この問題に遭遇しました。クロスドメイン
アクセス後にメイン ウィンドウに特殊効果を表示する必要がありました。情報を検索し、さまざまなブラウザでの継続的な試行と互換性テストを通じて、いくつかの実現可能な解決策を見つけました。
。つまり、ユーザーが Web サイト A を訪問したときに生成される Web サイト B へのクロスドメイン アクセス リクエストは、Web サイト A の指定されたページに送信され、そのページがユーザー ページの代わりにインタラクションを完了することで、適切な結果が返されます。このソリューションは、この段階で考えられるクロスドメイン アクセスの問題のほとんどを解決できますが、Web サイト A が Web プロキシ サポートを提供する必要があるため、Web サイト A と Web サイト B は緊密に連携し、各対話プロセス、サーバーが必要になります。 WebサイトAの負荷が大きくなり、ユーザーに代わってセッション状態を保存できなくなります。
2. オンデマンド方式。 MYMSN のポータルではこの方法が使用されていますが、MYMSN にはクロスドメイン アクセスの問題がありません。スクリプト タグの生成を動的に制御し、スクリプト タグの src 属性を変更することでクロスドメイン ページへの呼び出しを完了します。このソリューションの欠点は、スクリプトの src 属性が呼び出しを完了するために get メソッドを使用することです。リクエスト中に渡される文字列が大きすぎると、正しく実行されない可能性があります。ただし、このソリューションは集約ポータルに非常に適しています。
3. iframe メソッド。 javaeye の Waking up によるクロスドメイン アクセスに関する投稿を確認しました。彼は iframe を使用してクロスドメイン アクセスの問題を解決したと述べていました。データの送信と取得に iframe を使用することは確かに可能ですが、親ウィンドウと子ウィンドウは対話できないため (クロスドメイン アクセスの場合、この対話は拒否されます)、親ウィンドウへの影響を完了できません。
(この記事を見つけました。アドレスを追加してください: http://www.javaeye.com/topic/15641 )
4. ユーザー ローカル ダンプ方法: IE 自体は Windows プラットフォームの特性に依存して、iframe ベースの, メモリを使用して「バイパス」する解決策は、クライアントの Windows クリップボードを介して 2 つのウィンドウ間でデータを送信できることです。ポーリング用のデータを受信する側で間隔を設定し、データを取得した後に間隔をクリアするだけです。結果。 。 FF はプラットフォームの独立性によりクリップボード方式をサポートしていないと判断され、以前のバージョンの FF のプラグインの脆弱性は修正されているため、FF はメモリを介した秘密の通過を完了できません。 FF はファイル操作をサポートしていないため (ドメイン間のデータ転送は Cookie を介して完了できません)、この技術的方法は IE でのみ使用できます。
5. この種の問題を解決するための私独自の方法: 前述の方法を組み合わせて、Web サイト A にアクセスしたときに、まず Web サイト B にデータ処理の完了をリクエストし、次に返された ID に基づいて必要な結果を取得します。この方法の欠点は、Web サイト B の負荷が増加することも明らかです。セッションも維持され、Web サイト A と Web サイト B のページ間のインタラクション機能が強化されるという利点があります。最も重要なのは、このソリューションが私のニーズをすべて満たしていることです。
要約すると、上記のオプションの中で、大量のデータを送信せずにほとんどの問題を解決できるオンデマンド方式が最もお勧めです。
Web アプリケーションのクロスドメイン アクセス ソリューションのアドレス: http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html