2日前にドメインクロスの問題に遭遇しましたが、JSONPを使用して解決できます。 (//www.vevb.com/article/57889.htm)
私は最近整理しました:
1.jsonp。
ajaxリクエスト、データ型はjsonpです。このフォームでは、サーバー側のコールバック([JSON-Object])を返すフォームに調整する必要があります。サーバーが通常のJSONオブジェクトを返す場合。次に、デバッグ時に、「猛攻撃のSyntaxerror:予期しないトークン」エラーがChromeブラウザーのコンソールに報告されます。 「syntaxerror:紛失;ステートメントの前」エラーは、Firefoxブラウザーのコンソールで報告されます。
2.イフラメクロスドメイン。
ページにiframe要素を追加します。 GETリクエストを呼び出す必要がある場合は、IFRAMEのSRCをGETリクエストURLに設定して、GETリクエストへの呼び出しを開始します。
コードコピーは次のとおりです。
var url = "http://xxx.xxx.xxx?p1 = 1&p2=2";
$( "#iframe")
IFRAMEメソッドはJSONPよりも強いです。 HTTPリクエストを処理できることに加えて、ドメイン全体にJSコールを実装することもできます。
3。スクリプト要素のSRC属性の処理
IFRAME、IMG、スタイル、スクリプト、およびその他の要素のSRC属性は、異なるドメインからリソースを直接リクエストできます。 JSONPは、スクリプトタグを使用してクロスドメイン要求リソースの簡単な実装です。したがって、これは基本的にJSONPと同じであり、サーバーにコールバックを要求する必要があります...フォーム。
コードコピーは次のとおりです。
var url = "http://xxx.xxx.xxx?p1=1";
var script = document.createelement( 'script');
script.setattribute( 'src'、url);
document.getElementsByTagname( 'head')[0] .appendChild(script);
4.サーバーで処理を取得します。
フロントエンドで処理するための厳格な要件がない人のために、サーバー上でそれらをカプセル化してからサーバー上の呼び出しを開始することができます。これにより、クロスドメインの問題が解決できます。次に、リクエストが発行されるか、返品値を取得する必要があるかに基づいて、コードが同期モードを使用するか非同期モードを使用するかを決定します。
コードコピーは次のとおりです。
private static void creategethttpresponse(string url、int?timeout、string useragent、cookiecollection cookie)
{
if(string.isnullorempty(url))
{
新しいargumpnullexception( "url");
}
var request = webrequest.create(url)as httpwebrequest;
request.method = "get";
if(!string.isnullorempty(useragent))
{
request.useragent = useragent;
}
if(timeout.hasvalue)
{
request.timeout = timeout.value;
}
if(cookies!= null)
{
request.cookiecontainer = new cookiecontainer();
request.cookiecontainer.add(cookies);
}
request.begingetresponse(null、null); // asynchronous
// request.getResponse()as httpwebreaponse;
}
5.フラッシュクロスドメイン
あまりにも最先端==、もう一度勉強してください
概要:上記の5つの方法は、JSのクロスドメインの問題を解決する一般的な方法です。最後のものは比較的ハイエンドです。私がそれをはっきりと勉強した後、それを補いましょう。