OPTIONS 方法比較少見,該方法用于請求服務器告知其支持哪些其他的功能和方法。通過 OPTIONS 方法,可以詢問服務器具體支持哪些方法,或者服務器會使用什么樣的方法來處理一些特殊資源??梢哉f這是一個探測性的方法,客戶端通過該方法可以在不訪問服務器上實際資源的情況下就知道處理該資源的最優(yōu)方式。
既然比較少見,什么情況下會使用這個方法呢?
采用Ajax跨域調(diào)用接口的時候,瀏覽器會自動發(fā)起一個 OPTIONS 方法到服務器。
自動發(fā)起的 OPTIONS 請求,其請求頭包含了的一些關(guān)鍵性字段:
OPTIONS /upload HTTP/1.1
Access-Control-Request-Method: POST
Access-Control-Request-Headers: accept, content-type
Origin: http://xxx.com
服務器收到預檢請求后,檢查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后,確認允許跨源請求,就可以做出回應。

options
OPTIONS /api/User/Register HTTP/1.1
Host: 12.11.10.206:5005
Access-Control-Request-Method: POST
Access-Control-Request-Headers: accept, content-type
Origin: http://localhost
User-Agent: PostmanRuntime/7.18.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 34e5eb85-3c07-48b8-bea8-60477a63047d,0259f642-9d54-4674-8a2a-e063c0482fdc
Host: 114.116.100.206:5005
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache
上面的HTTP回應中,關(guān)鍵的是Access-Control-Allow-Origin字段,表示orgin 可以請求數(shù)據(jù)。該字段也可以設(shè)為星號,表示同意任意跨源請求。