OPTIONS

优质
小牛编辑
129浏览
2023-12-01

OPTIONS用于描述目标资源的通讯选择。客户端可以为 OPTIONS 方法指定一个特定的 URL,或者指定一个星号(*)来引用整个服务器。

请求具有正文

没有

成功的回应有身体

安全

幂等

可缓存

没有

在HTML表单中允许

没有

语法

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

示例

识别允许的请求方法

要找出服务器支持的请求方法,可以使用 curl 并发出 OPTIONS 请求:

curl -X OPTIONS http://example.org -i

该响应包含一个包含允许的方法的Allow头文件:

HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800Date: Thu, 13 Oct 2016 11:45:00 GMT
Expires: Thu, 20 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)x-ec-custom-error: 1Content-Length: 0

在 CORS 中预先发送请求

在 CORS 中,发送带该OPTIONS方法的预检请求,以便服务器可以响应以这些参数发送请求是否可接受。Access-Control-Request-Method报头通知服务器作为预检请求被发送的实际请求时,它将被与发送的一部分POST请求方法。Access-Control-Request-Headers报头通知服务器被发送的实际请求时,它将被与发送X-PINGOTHERContent-Type自定义首部。服务器现在有机会确定它是否希望在这种情况下接受请求。

OPTIONS /resources/post-here/ HTTP/1.1 Host: bar.other 
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 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Origin: http://foo.example 
Access-Control-Request-Method: POST 
Access-Control-Request-Headers: X-PINGOTHER, Content-Type

服务器响应Access-Control-Allow-Methods,并表面POSTGETOPTIONS是可行的方法来查询相关资源。这个表头与Allow响应头类似,但严格在 CORS 的环境中使用。

HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 01:15:39 GMT 
Server: Apache/2.0.61 (Unix) Access-Control-Allow-Origin: http://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 
Content-Encoding: gzip 
Content-Length: 0 Keep-Alive: timeout=2, max=100 Connection: Keep-Alive 
Content-Type: text/plain

规范

规范

标题

RFC 7231,第4.3.7节:选项

超文本传输协议(HTTP / 1.1):语义和内容

浏览器兼容性

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

Basic Support

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

也可以看看

  • Allow header
  • CORS