OPTIONS

HTTP の OPTIONSメソッドは、指定された URL またはサーバーの許可されている通信オプションをリクエストします。クライアントはこのメソッドで URL か、サーバー全体を表すアスタリスク (*) を指定することができます。

リクエストの本文 なし
成功時のレスポンスの本文 あり
安全性 あり
べき等性 あり
キャッシュ 不可
HTML フォームでの使用 不可

構文

OPTIONS /index.html HTTP/1.1
OPTIONS * HTTP/1.1

許可されたリクエストメソッドの識別

サーバーが対応しているリクエストメソッドを調べるには、 curl を使用して OPTIONS リクエストを発行してください。

bash
curl -X OPTIONS https://example.org -i

レスポンスには、許可されているメソッドを含んだ Allow ヘッダーが入ります。

HTTP/1.1 204 No Content
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)

CORS でのプリフライトリクエスト

CORS では、プリフライトリクエストOPTIONS メソッドで送信すると、サーバーはリクエストを送信して受け付けられるかどうかを応答できるようにします。下記の例では、次の引数に対する許可を要求します。

  • プリフライトリクエストで送信される Access-Control-Request-Method ヘッダーは、実際のリクエストを送信する際に、リクエストメソッドが POST であることをサーバに知らせます。
  • Access-Control-Request-Headers ヘッダーは、実際のリクエスト送信時に X-PINGOTHERContent-Type ヘッダーを持つことをサーバーに知らせます。
OPTIONS /resources/post-here/ HTTP/1.1
Host: bar.example
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive
Origin: https://foo.example
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-PINGOTHER, Content-Type

サーバーは、このような状況下でリクエストを受け入れるかどうかを応答することができるようになりました。下記の例では、サーバーのレスポンスは次のように言っています。

Access-Control-Allow-Origin

https://foo.example のオリジンは、以下の方法で bar.example/resources/post-here/ の URL をリクエストすることが許可されています。

Access-Control-Allow-Methods

POST, GET, OPTIONS がその URL で許可されているメソッドです。(このヘッダーは Allow レスポンスヘッダーに似ていますが、CORS でのみ使用します。)

Access-Control-Allow-Headers

レスポンスを検査するスクリプトは X-PINGOTHERContent-Type ヘッダーの値を読み取ることが許可されます。

Access-Control-Max-Age

上記の許可は、 86,400 秒(1 日)キャッシュされる可能性があります。

HTTP/1.1 204 No Content
Date: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache/2.0.61 (Unix)
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
Vary: Accept-Encoding, Origin
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive

仕様書

Specification
HTTP Semantics
# OPTIONS

ブラウザーの互換性

BCD tables only load in the browser

関連情報