HTTP 協議 POST 請求,為什麼會有一個 OPTION?

HTTP 協議 POST 請求,為什麼會有一個 OPTION?

正如上面問題所說,當你打開 Chrome 開發工具或者其他抓包工具的時候,會發現一條 POST 請求輸出兩次,第一次狀態顯示 OPTION。

一、官方定義

HTTP 協議 POST 請求,為什麼會有一個 OPTION?

1.OPTIONS 方法是用於請求獲得由 Request-URI 標識的資源在請求/響應的通信過程中可以使用的功能選項。

2.該請求方法的響應不能緩存

3.如果這個 OPTIONS 請求包含一個正文(有 Content-Length 或 Transfer-Encoding 存在),則必須有Content-Type 來指定媒體類型

雖然規範裡沒有定義這種正文的用法,但是 HTTP 將來的擴展可能會用它來查詢服務器上更詳細的信息。

3.如果該 URI 是一個星號(“*”),OPTIONS 請求將試圖應用於服務器,而不是某個指定資源。

由於服務器的通信選項通常依賴於資源,所以此“”請求只能作為“ping”或者“no-op”方法;或者用來測試服務器的性能。

例如,用來測試 HTTP/1.1 代理。

4.如果該 URI 不是星號,則只能用來獲取該資源通信中可用的選項

5.得到的 200 響應應該包含一個頭域,指明服務器實現的和適用於該資源的可選特徵(如:Allow),可能還包括該規範尚未定義的擴展。

如果有響應正文,則應包含關於通信選項的信息。

可以利用內容協商來選擇合適的響應格式。如果沒有響應正文,響應必須包含 Content-Length,並且值為“0”。

6.請求頭的 Max-Forwards 用來請求特定代理。當代理收到一個允許 URI 轉發的 OPTIONS請求,則檢查Max-Forwards。

如果 Max-Forwards 值為0,則不能轉發該消息;相反,代理會將自己的通信選項去響應。如果Max-Forwards 是正整數,代理轉發請求的時候會將該值減1。

如果請求中沒有 Max-Forwards,轉發的請求也不會有。

通過這個方法,客戶端可以在採取具體資源請求之前,決定對該資源採取何種必要措施

,或者瞭解服務器的性能

二、主要功能

HTTP 協議 POST 請求,為什麼會有一個 OPTION?

根據上面描述,我們可以列舉出 OPTION 的主要功能:

其一:獲取服務器支持的 HTTP 請求方法;

其二:用來檢查服務器的性能。

值得注意的是:其實 HTTP 請求還分為兩類:普通請求和簡單請求。

三、結論

HTTP 協議 POST 請求,為什麼會有一個 OPTION?

那麼到這裡,大家已經瞭然於胸了吧!

OPTIONS 請求旨在發送一種“探測”請求以確定針對某個目標地址的請求必須具有怎樣的約束(比如應該採用怎樣的HTTP方法以及自定義的請求報頭),然後根據其約束髮送真正的請求。

比如針對“跨域資源”的預檢(Preflight)請求採用的 HTTP 方法就是 OPTIONS。

通過這個方法,客戶端可以在採取具體資源請求之前,決定對該資源採取何種必要措施,或者瞭解服務器的性能

四、熱門文章推薦

1.

2.

3.

HTTP 協議 POST 請求,為什麼會有一個 OPTION?


分享到:


相關文章: