プリフライトリクエスト(Preflight Request)とは、Webブラウザが特定のHTTPリクエストを送る前に、サーバーに対してそのリクエストが許可されているかを確認するための手続きです。主に、異なるオリジン(ドメイン、ポート、プロトコルが異なる場合)のサーバーにリクエストを送信する際に使用されます。
なぜプリフライトリクエストが必要なのか?
Webサイトでは、他のサーバーからデータを取得したり、データを送信したりすることがあります。このとき、セキュリティのためにブラウザは"同一生成元ポリシー"というルールを守ります。このルールは、悪意あるサイトが他のサイトに不正にアクセスしないようにするためのものです。そのため、異なるオリジンにリクエストを送る場合、最初にプリフライトリクエストが送信され、サーバー側がそれを許可するかどうかを判断します。
プリフライトリクエストの仕組み
通常のHTTPリクエストに先立って行われるプリフライトリクエストは、HTTPメソッドとしてOPTIONSが使われます。このリクエストでは、クライアントがどのようなHTTPメソッド(例えばGETやPOST)を使用するか、どのようなヘッダーを用いるかが送信されます。サーバーはこれを受け取って、もしそのリクエストが許可されるものであれば、HTTPステータスコード200で応答します。
HTTPメソッド | 説明 |
---|---|
OPTIONS | プリフライトリクエストを送る際に使用されます。 |
GET | データを取得するためのリクエストです。 |
POST | データを送信するためのリクエストです。 |
プリフライトリクエストが発生する条件
すべてのリクエストでプリフライトリクエストが行われるわけではありません。以下の条件のいくつかを満たす場合に、プリフライトリクエストが必要になります:
<h2>まとめh2>プリフライトリクエストは、Webブラウザが異なるオリジンにリクエストを送信する際に必要なセキュリティ機能です。これにより、Webアプリケーションは安全にデータをやり取りできるようになっています。Web開発をする際には、この仕組みを理解していると非常に役立ちます。
CORS:Cross-Origin Resource Sharingの略で、異なるオリジン間でリソースを共有するための仕組み。プリフライトリクエストは、このCORSの一部として機能する。
HTTPリクエスト:ウェブサーバーにデータを送信するための方法で、さまざまなメソッド(GET、POSTなど)を使用する。プリフライトリクエストもHTTPリクエストの一種。
OPTIONSメソッド:HTTPリクエストのメソッドの一つで、サーバーがサポートしているHTTPメソッドの情報を取得するために使われる。プリフライトリクエストでは、このメソッドが使われる。
アクセス制御:特定のリソースにアクセスできるユーザーやドメインを制限すること。プリフライトリクエストは、これに関連したセキュリティ機能を提供する。
プリフライト:実際のリクエストを送る前に、サーバーに対して送信される確認用のリクエスト。プリフライトリクエストは、リクエスト内容が安全かどうかを事前に確認する役割がある。
JSON:JavaScript Object Notationの略で、データを表現するための軽量なフォーマット。APIとのやり取りに頻繁に使われる。プリフライトリクエストの際にも活用される場合がある。
セキュリティ:データやシステムを守るための防御策。プリフライトリクエストは、これを強化する目的で使われる。
サーバー:インターネット上でデータを保存し、ユーザーからのリクエストに応じてそれを提供するコンピュータ。プリフライトリクエストは、サーバーとクライアントの間でのやり取りに影響を与える。
CORS:Cross-Origin Resource Sharingの略で、異なるオリジン(ドメイン)間でのリソースの共有を制御する仕組み。この設定によって、Webブラウザがリソースにアクセスできるかどうかを決定されます。
OPTIONSリクエスト:HTTPメソッドの一つで、サーバーにサポートされているメソッドを問い合わせるために使用される。このリクエストは、プリフライトリクエストの一部として送信されることが多い。
プリフライト:特にCORSに関連して、実際のリクエストを送信する前に、そのリクエストが許可されるかどうかを確認するために行われる事前チェック。
事前リクエスト:プリフライトリクエストの日本語訳の一つで、HTTPリクエストの内容が安全であるか確認するためのリクエストを指す。
前提確認:プリフライトリクエストが行われる目的として、サーバーが元のリクエストを許可するかどうかを事前に確認する作業を示す言い方。
CORS:Cross-Origin Resource Sharingの略で、異なるオリジン(ドメインやポート)間でリソースを共有するための仕組みを指します。プリフライトリクエストは、CORSの一部として利用されます。
HTTPメソッド:ウェブサーバーへのリクエストの際に使用される動詞のことで、GETやPOST、PUT、DELETEなどがあります。プリフライトリクエストでは主にPUTやDELETEなどの安全でないHTTPメソッドが使用されることがあります。
OPTIONSメソッド:サーバーがサポートするHTTPメソッドや、指定されたリソースに対する通信方法についての情報を返すためのリクエストです。プリフライトリクエストでは、クライアントがあらかじめこのOPTIONSメソッドを使用してサーバーに確認を行います。
Preflight:プリフライトとは、実際のリクエストの前に行われる確認用のリクエストのことです。特に、特定の条件を満たさない場合には実行され、対象のリソースに対するアクセスが許可されるかどうかを確認します。
許可ヘッダー:CORSのプリフライトリクエストに対してサーバーが返すレスポンスのヘッダーで、どのオリジンからのリクエストが許可されているかや、どのHTTPメソッドが利用可能かといった情報を示します。
セキュリティ:プリフライトリクエストは、ブラウザがセキュリティを強化するために導入した仕組みであり、APIに対する悪意のあるアクセスを制限することを目的としています。
レスポンスヘッダー:サーバーからクライアントに送信されるヘッダー情報で、プリフライトリクエストの場合、CORSポリシーに基づいてどのオリジンやメソッドが許可されているかを示します。
オリジン:Webリソースの所在を示すもので、スキーム(http/https)、ホスト、ポートから構成されます。CORSでは、異なるオリジン間のリクエストに関する規則が適用されます。