jquery はクライアントのクロスドメイン アクセスの問題を解決します_jquery

WBOY
リリース: 2016-05-16 16:22:13
オリジナル
991 人が閲覧しました

クライアント側の「クロスドメイン アクセス」は常に頭の痛い問題でしたが、幸いなことに、jQuery の助けにより、クロスドメインの問題は jQuery-1.2 以降解決されました。プロジェクトでクロスドメインの問題に遭遇したため、この機会にクロスドメインの問題を調査し、関連情報と自分の実践を参考にして、最終的にクロスドメインの問題を解決しました。参考までに記録しておきます。

jQuery.ajax() はクロスドメイン get メソッドをサポートしています。これは実際には jsonp を使用して行われます。

実際のケース:

コードをコピーします コードは次のとおりです:

$.ajax({
非同期:false、
url: 'http://www.mysite.com/demo.do', // クロスドメイン URL
タイプ: 'GET'、
データ型: 'jsonp'、
jsonp: 'jsoncallback', //デフォルトのコールバック
データ: mydata、
タイムアウト: 5000、
beforeSend: function(){ //このメソッドは jsonp モードではトリガーされません。その理由は、dataType が jsonp として指定されている場合、ajax イベントではなくなるためである可能性があります
},
成功: 関数 (JSON) {// クライアント JQuery の事前定義されたコールバック関数。クロスドメイン サーバー上で JSON データを正常に取得した後、このコールバック関数
。 If(json.actionErrors.length!=0){
アラート(json.actionErrors);                                                                                                       genDynamicContent(qsData,type,json); }、
完了: function(XMLHttpRequest, textStatus){
$.unblockUI({ fadeOut: 10 }); }、
エラー: function(xhr){
アウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトオーバーアウトオーバーオーバーオーバーそうそうそうそうそうそうそうそれではととととととととととととととととととととととととととトスこのメソッドとこのメソッド メソッド メソッド メソッド メソッドからメソッド メソッドからメソッド メソッドをトリガーしない
//リクエストエラー処理
alert("リクエストエラー(該当するネットワークの状態を確認してください。)"); }
});



注:

コードをコピーします

コードは次のとおりです: $.getJSON(" http://www.mysite.com/demo.do?name1=" value1 "&callback=?",
function(json){
If(json.プロパティ名==値){
//コードを実行                                                                                                       });

このメソッドは実際には、上記の例の $.ajax({..}) API の高度なカプセル化です。$.ajax API の基礎となるパラメーターの一部はカプセル化されており、表示されません。

サーバー側で、callback= request.getParameter("callback") を使用して、後で jQuery 側でコールバックされる jsonp32440980 を取得します
次に、次のようなものを返します: "jsonp32440980(" 返される json 配列 ")"; jquery はこれを動的にロードし、コールバック メソッドを通じて呼び出します: jsonp32440980 (json array); これにより、クロスドメインのデータ交換の目的が達成されます。 jsonp の最も基本的な原則は、動的に追加すると一貫性があるということです (qq スペースはこの方法を使用してクロスドメイン データ交換を実現します)。 JSONP は一種のスクリプト インジェクション (Script Injection) 動作であるため、一定のセキュリティ リスクもあります。


注: jquey はポストクロスドメインをサポートしていません。
これは、post を使用して iframe を動的に生成することで、ポスト クロスドメインの目的を達成できますが (これは、js の専門家が jquery1.2.5 にパッチを当てた方法です)、これは比較的極端な方法であるため、お勧めできません。 get のクロスドメイン アクセス方法は合法であり、post メソッドはセキュリティの観点からは違法であると考えられるため、クライアントでのクロスドメイン アクセスの要求は最後の手段として行わない方がよいと言えます。情報によると、html5 の WebSocket 標準はクロスドメイン データ交換をサポートしており、将来的にはオプションのクロスドメイン データ交換ソリューションになるはずです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート