HTTP請求方法並不是只有GET和POST,只是最常用的。據RFC2616標准(現行的HTTP/1.1)得知,通常有以下8種方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。
官方定義
OPTIONS方法是用於請求獲得由Request-URI標識的資源在請求/響應的通信過程中可以使用的功能選項。通過這個方法,客戶端可以在采取具體資源請求之前,決定對該資源采取何種必要措施,或者了解服務器的性能。
該請求方法的響應不能緩存。
如果這個OPTIONS請求包含一個正文(有Content-Length或Transfer-Encoding存在),則必須有Content-Type來指定媒體類型。雖然規范里沒有定義這種正文的用法,但是HTTP將來的擴展可能會用它來查詢服務器上更詳細的信息。不支持該擴展的服務器可以忽略該請求正文。
如果該URI是一個星號(“*”),OPTIONS請求將試圖應用於服務器,而不是某個指定資源。由於服務器的通信選項通常依賴於資源,所以此“*”請求只能作為“ping”或者“no-op”方法;或者用來測試服務器的性能。例如,用來測試HTTP/1.1代理。
如果該URI不是星號,則只能用來獲取該資源通信中可用的選項。
得到的200響應應該包含一個頭域,指明服務器實現的和適用於該資源的可選特征(如:Allow),可能還包括該規范尚未定義的擴展。如果有響應正文,則應包含關於通信選項的信息。本規范沒有定義該正文格式,但可能在HTTO將來的擴展中定義。可以利用內容協商來選擇合適的響應格式。如果沒有響應正文,響應必須包含Content-Length,並且值為“0”。
請求頭的Max-Forwards用來請求特定代理。當代理收到一個允許URI轉發的OPTIONS請求,則檢查Max-Forwards。如果Max-Forwards值為0,則不能轉發該消息;相反,代理會將自己的通信選項去響應。如果Max-Forwards是正整數,代理轉發請求的時候會將該值減1。如果請求中沒有Max-Forwards,轉發的請求也不會有。
簡而言之
OPTIONS請求方法的主要用途有兩個:
1、獲取服務器支持的HTTP請求方法;也是黑客經常使用的方法。
2、用來檢查服務器的性能。例如:AJAX進行跨域請求時的預檢,需要向另外一個域名的資源發送一個HTTP OPTIONS請求頭,用以判斷實際發送的請求是否安全。
轉載來源:https://blog.csdn.net/leikezhu1981/article/details/7402272