OPTIONS

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

HTTP OPTIONS 方法用於請求給定 URL 或伺服器的允許通訊選項。用戶端可以使用此方法指定 URL,或使用星號(*)來指代整個伺服器。

請求是否有主體
成功回應是否有主體 可能
安全
冪等
可緩存
HTML 表單中是否允許

語法

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

範例

辨識允許的請求方法

要查找伺服器支援的請求方法,可以使用 curl 命令列程序發出 OPTIONS 請求:

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

然後回應中包含一個包含允許方法的 Allow 標頭:

http
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 方法發送預檢請求,以便伺服器可以回應是否允許發送請求。在此範例中,我們將請求許可權的參數列出如下:

http
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: content-type,x-pingother

伺服器現在可以回應是否接受這些情況下的請求。在此範例中,伺服器回應表示:

Access-Control-Allow-Origin

允許 https://foo.example 來源通過以下方式請求 bar.example/resources/post-here/ URL:

Access-Control-Allow-Methods

URL 的允許方法為 POSTGETOPTIONS。(此標頭類似於 Allow 回應標頭,但僅用於 CORS。)

Access-Control-Allow-Headers

X-PINGOTHERContent-Type 為 URL 的允許請求標頭。

Access-Control-Max-Age

上述許可權可以被緩存 86400 秒(1 天)。

http
HTTP/1.1 200 OK
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

狀態碼

200 OK 和 204 No Content 都是允許的狀態碼,但一些瀏覽器錯誤地認為 204 No Content 應用於資源,並且不會發送後續請求以取得它。

規範

Specification
HTTP Semantics
# OPTIONS

瀏覽器相容性

BCD tables only load in the browser

參見