Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

OPTIONSメソッド(オプションズメソッド)とは | 意味や読み方など丁寧でわかりやすい用語解説

OPTIONSメソッド(オプションズメソッド)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

オプションメソッド (オプションメソッド)

英語表記

OPTIONS method (オプションズ メソッド)

用語解説

OPTIONSメソッドは、Hypertext Transfer Protocol (HTTP) における標準的なメソッドの一つである。その主な目的は、特定のURL(リソース)がサポートする通信オプションや機能を、クライアントが事前に問い合わせることにある。具体的には、そのリソースに対してどのようなHTTPメソッド(GET, POST, PUT, DELETEなど)が許可されているか、あるいはリクエストに含めることが許されるヘッダーは何かといった情報を、実際のデータ送信を伴うリクエストの前に取得するために利用される。これにより、クライアントはサーバーとの間で不必要な通信を避け、より効率的かつ安全な対話を行うことが可能になる。特に、Webブラウザのセキュリティ機能であるCross-Origin Resource Sharing (CORS) における「プリフライトリクエスト」として、その重要性が高まっている。

クライアントがOPTIONSメソッドを使ってサーバーにリクエストを送信すると、サーバーは対象のリソースに関する通信情報をHTTPレスポンスとして返す。このレスポンスには、主にAllowヘッダーが含まれる。Allowヘッダーは、リクエストされたリソースに対してサーバーが許可するHTTPメソッドのリストを示す。例えば、Allow: GET, POST, HEADといった値が含まれていれば、そのリソースに対してはこれらのメソッドのみが許可されており、PUTやDELETEといったメソッドは拒否されることをクライアントは事前に知ることができる。これにより、クライアントは実行しようとしている操作がサーバーによってサポートされているかどうかを事前に確認し、サポートされていない操作を試みてサーバーからエラーレスポンスを受け取ることを回避できる。

OPTIONSメソッドの最も一般的で重要な利用シーンは、WebブラウザにおけるCORSプリフライトリクエストである。CORSは、異なるオリジン(プロトコル、ホスト、ポートの組み合わせ)にあるWebアプリケーション間でリソースを共有するための仕組みだが、セキュリティ上の理由から、通常は異なるオリジンへのアクセスが制限されている。ブラウザは、セキュリティリスクが高いと判断される特定のリクエスト(「複雑なリクエスト」と呼ばれる)を、実際のデータ送信の前に、自動的にOPTIONSメソッドを使ってサーバーに「予備的な問い合わせ(プリフライト)」を送信する。

「複雑なリクエスト」とは、例えば、GETやPOST以外のメソッド(PUT, DELETE, PATCHなど)を使用するリクエストや、特定のContent-Typeapplication/jsonなど)以外の値を持つリクエスト、あるいはカスタムヘッダーを含むリクエストなどが該当する。これらのリクエストは、サーバー上のデータに対する破壊的な変更を引き起こす可能性があるため、ブラウザは本番のリクエストを送信する前に、その操作がサーバーによって許可されているかどうかを確認する必要がある。

このプリフライトリクエストを受信したサーバーは、そのリクエストに対してCORSポリシーを評価し、対応するHTTPヘッダーを含むレスポンスを返す。具体的には、Access-Control-Allow-Originヘッダーでどのオリジンからのアクセスを許可するか、Access-Control-Allow-MethodsヘッダーでどのHTTPメソッドを許可するか、Access-Control-Allow-Headersヘッダーでどのヘッダーの使用を許可するかなどをブラウザに伝える。また、Access-Control-Max-Ageヘッダーは、プリフライトリクエストの結果をブラウザがキャッシュして良い時間を秒単位で指定し、その期間中は同じオリジンとリクエスト設定に対するプリフライトリクエストを省略できるようにする。

ブラウザは、サーバーからのプリフライトレスポンスを受け取ると、そこに書かれたCORS関連ヘッダーを解析する。もしサーバーが実際の(複雑な)リクエストの実行を許可する旨のヘッダーを含んでいれば、ブラウザは改めて実際のデータ送信を伴うリクエストを送信する。しかし、もしサーバーが許可しない旨のレスポンスを返したり、必要なCORSヘッダーを含まなかったりした場合、ブラウザはセキュリティポリシーに違反すると判断し、実際のデータ送信を行わずにエラーを発生させる。これにより、悪意のあるWebサイトが、ユーザーがログインしている他のサイトに対して、ユーザーの知らないうちにデータを変更するようなリクエストを勝手に送信することを防ぐことができる。

このように、OPTIONSメソッドは単にサーバーがサポートするメソッドを問い合わせるだけでなく、特にCORSの文脈においては、Webアプリケーションのセキュリティを確保し、異なるオリジン間の安全な通信を仲介する非常に重要な役割を担っている。サーバーを開発する際には、OPTIONSリクエストを適切に処理し、AllowヘッダーやCORS関連のAccess-Control-*ヘッダーを正しく設定することが求められる。これにより、クライアントからの意図しないエラーを減らし、セキュアで互換性の高いWebサービスを提供することが可能となる。クライアント側も、事前にサーバーの機能を把握することで、無駄なリクエストの送信を避け、効率的なWebアプリケーションを構築できる。

関連コンテンツ