request-line = method SP request-target SP HTTP-version CRLF
method 方法 :指明操作目的 ,動詞
request-target = origin-form / absolute-form /authority-form / asterisk-form
origin-form = absolute-path [ "?" query ]
- 向 origin server 發起的請求,path 為空時必須傳遞 /
absolute-form = absolute-URI
- 僅用於向正向代理proxy發起請求時
authority-form = authority
- 僅用於 CONNECT 方法 ,建立vpn等隧道時才會使用。例如 CONNECT www.example.com:80 HTTP/1.1
asterisk-form = " * "
- 僅用於OPTIONS方法
HTTP-version 版本號發展歷史
- HTTP/0.9 :只支持GET方法,過時
- HTTP/1.0 :RFC1945,1996,常見使用於代理服務器(例如Nginx默認設置)
- HTTP/1.1 :RFC2616,1999,增加緩存管理和控制;允許持久鏈接;允許響應數據分塊(chunked),利於傳輸大文件;強制要求Host頭,
- HTTP/2.0 :2015.5 正式發布 ,二進制協議,不再是純文本;可發起多個請求;使用專用算法壓縮頭部,減少數據傳輸量;允許服務器主動向客戶端推送數據;增加了安全性,要求加密通信。
method:
- GET:主要的獲取信息的方法,大量性能優化都針對改方法,冪等方法(冪等方法:調用一次和多次獲得的結果是完全一致的)
- HEAD:類似於GET方法,但是服務器不發送BODY,用以獲取HEAD元數據,冪等方法
- POST:常用於提交HTML FORM表單、新增資源等
- PUT:更新資源,帶條件時是冪等方法
- DELETE:刪除資源,冪等方法
- CONNECT:建立tunnel隧道
- OPTIONS:顯示服務器對訪問資源支持的方法,冪等方法
如何使用OPTIONS?
linux電腦上默認支持CURL命令,windows上需要安裝CURL,安裝的方式參考:https://jingyan.baidu.com/article/a681b0dec4c67a3b1943467c.html
返回的Allow頭部就是服務器對訪問資源支持的方法
用於文檔管理的WEBDEV方法(RFC2518)
webdav方法也是http方法,只不過為了處理文檔協作,專門制作的規范。也可以用於Restful API設計的。
- PROPFIND:從Web資源中檢索以XML格式存儲的屬性。它也被重載,以允許一個檢索遠程系統的集合結構(也叫目錄層次結構)
- PROPPATCH:在單個原子性動作中更改和刪除資源的多個屬性
- MKCOL:創建集合或者目錄
- COPY:將資源從一個URI復制到另外一個URI
- MOVE:將資源從一個URI移動到另外一個URI
- LOCK:鎖定一個資源。WebDAV支持共享鎖和互斥鎖
- UNLOCK:解除資源的鎖定
演示:
1.通過WebDAV協議連接服務器
2.使用連接工具做刪、移動、復制文件操作
3.使用WireShark抓到的報文