今度は、クロスドメインリクエスト (JSONP、CORS) に対する完璧なソリューションをお届けします。今からそれを皆さんと共有し、皆さんの参考にしてください。 よく知られている問題は、Ajax が通常のファイルを直接リクエストするため、クロスドメインの不正アクセスが発生することです。ソリューションには、JSONP、Flash などが含まれます。 JSONP Web ページ上で js ファイルを呼び出す場合、「src」属性を持つすべてのタグにはクロスドメイン機能があることがわかりました。 、<img>、<iframe> として。つまり、ドメインを越えてデータにアクセスしたい場合、サーバーはデータを js 形式のファイルに置くことしかできません。たまたま、JSON が複雑なデータを簡潔に記述できることがわかっており、JSON も js でネイティブにサポートされているため、クライアントはこの形式のデータをほぼ希望どおりに処理できます。その後、クライアントは、スクリプトを呼び出すのとまったく同じ方法で、クロスドメイン サーバー上で動的に生成された js 形式のファイルを呼び出すことができます。クライアントは JSON ファイルの呼び出しに成功すると、必要なデータを取得します。これが JSONP の基本概念を形成します。ユーザーはコールバック パラメーターをサーバーに渡すことができ、サーバーがデータを返すときに、このコールバック パラメーターを関数名として使用して JSON データをラップし、クライアントが独自の関数をカスタマイズして返されたデータを自動的に処理できるようにします。データ。 </p> <p>jQuery は JSONP 呼び出しをサポートしています。別のドメイン名でコールバック関数名を指定した後、次のフォームを使用して JSON データをロードできます。 <br></p> <p class="jb51code"></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;">url?callback=? jQuery.getJSON(url + "&callback=?", function(data) { alert(data.a + data.b); });</pre><div class="contentsignin">ログイン後にコピー</div></div><p></p> <p>もちろん、サーバーは JSONP サポートも提供する必要があります。実際には、読み取りおよび書き込みコールバックのパラメーターを提供するだけで済みます。 <br></p> <p><span style="color: #ff0000"><strong>Cross-Origin Resource Sharing (CORS) <br></strong></span></p> <p>Cross-Origin Resource Sharing (CORS) は、ドメインを越えてリソースにアクセスするときにブラウザーとサーバー間で通信する方法を定義する W3c 作業草案です。 CORS の背後にある基本的な考え方は、カスタム HTTP ヘッダーを使用して、ブラウザーとサーバーが相互に理解し、要求または応答が成功したかどうかを判断できるようにすることです。 <br></p> <p><span style="background-color: #ccffcc"> JSONP と比較して、CORS はより高度で、便利で、信頼性があります。 </span></p> <p>1. JSONP は GET リクエストのみを実装できますが、CORS はすべての種類の HTTP リクエストをサポートします。 <br></p> <p>2. CORS を使用すると、開発者は通常の XMLHttpRequest を使用してリクエストを開始し、データを取得できます。これにより、JSONP よりも優れたエラー処理が可能になります。 <br></p> <p>3. JSONP は主に古いブラウザーでサポートされており、多くの場合 CORS をサポートしていませんが、最新のブラウザーのほとんどはすでに CORS をサポートしています。 <br></p> <p>カスタムヘッダーのない単純なリクエストの場合は、GET または POST を使用し、その本文は text/plain で、リクエストは Origin と呼ばれる追加ヘッダーとともに送信されます。 Origin ヘッダーには、要求されたページのヘッダー (プロトコル、ドメイン名、ポート) が含まれているため、サーバーは応答を提供する必要があるかどうかを簡単に決定できます。 <br></p> <p>サーバー側は主に Access-Control-Allow-Origin を設定することで CORS をサポートします。 <br></p> <p><span style="color: #ff00ff">Header set Access-Control-Allow-Origin * <br></span></p> <p>XSS によるサーバーの攻撃を防ぐために、<br></p> <p><span style="color: #ff00ff">Access-Control-Allow-Origin: http:/ などのドメインを制限できます。 /www. jb51.net<br></span></p> <p> すでに多くのサービスが CORS をサポートしています。たとえば、AWS はクロスドメイン リソース共有機能 CORS をサポートしており、S3 へのアップロードにプロキシは必要ありません。 </p> <p>上記は私があなたのためにまとめたものです。 </p> <p>関連記事: </p> <p><a href="http://www.php.cn/js-tutorial-396466.html" target="_blank">JavaScriptでalert()メソッドをオーバーライドする手法の分析に焦点を当てる</a><br></p> <p><a href="http://www.php.cn/js-tutorial-396453.html" target="_blank">JavaScriptの基本構文と変数の説明</a><br></p> <p><a href="http://www.php.cn/js-tutorial-396471.html" target="_blank">JavaScriptのシミュレートされたオーバーロード、toStringの書き換えに関する詳細な回答メソッド</a> <br></p> <p></p> <p class="clearfix"><span class="jbTestPos"></span></p>