クライアント側の「クロスドメイン アクセス」は常に頭の痛い問題でしたが、幸いなことに、jQuery の助けにより、クロスドメインの問題は jQuery-1.2 以降解決されました。プロジェクトでクロスドメインの問題に遭遇したため、この機会にクロスドメインの問題を調査し、関連情報と自分の実践を参考にして、最終的にクロスドメインの問題を解決しました。参考までに記録しておきます。
jQuery.ajax() はクロスドメイン get メソッドをサポートしています。これは実際には jsonp を使用して行われます。
実際のケース:
このメソッドは実際には、上記の例の $.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 標準はクロスドメイン データ交換をサポートしており、将来的にはオプションのクロスドメイン データ交換ソリューションになるはずです。