ホームページ >ウェブフロントエンド >jsチュートリアル >Cross-Origin Resource Sharing (CORS) の HTTP リクエストをプリフライトする方法

Cross-Origin Resource Sharing (CORS) の HTTP リクエストをプリフライトする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-18 21:54:311051ブラウズ

How to Preflight an HTTP Request for Cross-Origin Resource Sharing (CORS)?

CORS: HTTPRequest のプリフライト

クロスオリジン リソース共有 (CORS) は、クロスドメイン HTTP リクエストに制限をもたらします。これらの課題に対処するために、プリフライト要求を使用できます。このコンテキストでは、プリフライト リクエストには、実際のリクエストが行われる前にサーバーに OPTIONS リクエストを送信することが含まれます。これにより、サーバーはリクエストが許可されていることを確認し、必要な権限を提供できます。

リクエストをプリフライトする方法

HTTP リクエストのプリフライトには、OPTIONS リクエストの送信が含まれます。特定のヘッダーを使用して、実際のリクエストに必要なメソッドとヘッダーを示します。サーバーは、リクエストのアクセス許可を付与または拒否するヘッダーで応答します。

サーバー側のプリフライト応答

サーバーは、次のヘッダーでプリフライト リクエストに応答する必要があります。

  • Access-Control-Allow-Origin: 実際のリクエストの実行を許可されるドメイン。
  • Access-Control-Allow-Methods: 実際のリクエストで許可されるメソッド。
  • Access-Control-Allow-Headers: 実際のリクエストで許可されるヘッダー。このヘッダーは '*' にすることはできません。

クライアント側のプリフライト リクエスト

jQuery では、次の手法を使用してリクエストをプリフライトできます。

<code class="javascript">$.ajax({
  url: yourUrl,
  type: 'OPTIONS',
  success: function(data, status) {
    // Extract and verify the preflight response headers
    var origin = data.getResponseHeader('Access-Control-Allow-Origin');
    var methods = data.getResponseHeader('Access-Control-Allow-Methods');
    var headers = data.getResponseHeader('Access-Control-Allow-Headers');
    // Proceed with the actual request only if permissions are granted
    if (origin === 'http://mydomain.com' && methods.indexOf('POST') !== -1 && headers.indexOf('X-Custom-Header') !== -1) {
      // Make the actual request
    } else {
      // Handle the error and deny the request
    }
  }
});</code>

これらの変更を実装することで、クロスドメイン HTTP リクエストがプリフライト検証され、ブラウザーの介入なしで続行できるようになります。

以上がCross-Origin Resource Sharing (CORS) の HTTP リクエストをプリフライトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。