CORS: HTTP リクエストをプリフライトする方法
クロスドメイン HTTP リクエストを扱う場合、ソースがGET リクエスト URL は、特に GET メソッドと POST メソッドの両方に対応するサービスの場合、常に実行可能であるとは限りません。したがって、効果的な回避策の 1 つは、「Access-Control-Allow-Origin」ヘッダーを含むようにサーバー応答を構成し、OPTIONS リクエストを使用してリクエストをプリフライトすることです。
プリフライト OPTIONS リクエスト中に、ブラウザーには次の 2 つのヘッダーが含まれます。 Control-Request-Method および Access-Control-Request-Header。これらのヘッダーは、クライアントが実際のリクエストで使用する予定のメソッドとヘッダーを示します。
リクエストを正常にプリフライトするには、サーバーはプリフライト応答でこれらのヘッダーを確認する必要があります。たとえば、ブラウザがプリフライト要求中に次のヘッダーを送信した場合:
<code class="console">Origin: http://yourdomain.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-Custom-Header</code>
サーバーのプリフライト応答には次のヘッダーが含まれる必要があります:
<code class="console">Access-Control-Allow-Origin: http://yourdomain.com Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: X-Custom-Header</code>
重要なのは、「Access-Control」 -Allow-Headers" 応答ヘッダーには、"Access-Control-Request-Headers" 要求ヘッダーで指定されているのと同じヘッダーが含まれている必要があり、ワイルドカード文字 '*' を含めることはできません。
サーバーがこれを送信すると、プリフライト応答が完了すると、ブラウザは実際のリクエストの作成を開始します。 CORS 実装の詳細と例については、html5rocks.com/en/tutorials/cors/ などのリソースを参照してください。
以上がクロスドメイン XMLHttpRequest 呼び出しを処理するために HTTP リクエストをプリフライトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。