超文本傳輸協議(HTTP, HyperText Transfer Protocol)是一種無狀態的協議,它位於OSI七層模型的傳輸層。HTTP客戶端會根據須要構建合適的HTTP請求方法,而HTTP服務器會根據不一樣的HTTP請求方法作出不一樣的響應。javascript
在HTTP的發展過程當中,出現了不少HTTP版本,其中的大部分協議都是向下兼容的。在進行HTTP請求時,客戶端在請求時會告訴服務器它採用的協議版本號,而服務器則會在使用相同或者更早的協議版本進行響應。html
這是HTTP最先大規模使用的版,現已過期。在這個版本中 只有GET
一種請求方法,在HTTP通信也沒有指定版本號,也不支持請求頭信息。該版本不支持POST
等方法,所以客戶端向服務器傳遞信息的能力很是有限。HTTP/0.9
的請求只有以下一行:java
GET www.itbilu.com
這個版本是第一個在HTTP通信中指定版本號的協議版本,HTTP/1.0
至今仍被普遍採用,特別是在代理服務器中。node
HTTP/1.0
支持:GET
、POST
、HEAD
三種HTTP請求方法。跨域
HTTP/1.1
是當前正在使用的版本。該版本默認採用持久鏈接,並能很好地配合代理服務器工做。還支持以管道方式同時發送多個請求,以便下降線路負載,提升傳輸速度。安全
HTTP/1.1
新增了:OPTIONS
、PUT
、DELETE
、TRACE
、CONNECT
五種HTTP請求方法。服務器
這個版本是最新發布的版本,於今年5月(2015年5月)作HTTP標準正式發佈。HTTP/2
經過支持請求與相應的多路重用來減小延遲,經過壓縮HTTP頭字段將協議開銷降到最低,同時增長了對請求優先級和服務器端推送的支持。網絡
HTTP/1.1
協議中共定義了8種HTTP請求方法,HTTP請求方法也被叫作「請求動做」,不一樣的方法規定了不一樣的操做指定的資源方式。服務端也會根據不一樣的請求方法作不一樣的響應。性能
GET
GET
請求會顯示
請求指定的資源。通常來講GET
方法應該只用於數據的讀取,而不該當用於會產生反作用的非冪等
的操做中。測試
GET
會方法請求指定的頁面信息,並返回響應主體,GET
被認爲是不安全的方法,由於GET
方法會被網絡蜘蛛等任意的訪問。
HEAD
HEAD
方法與GET
方法同樣,都是向服務器發出指定資源的請求。可是,服務器在響應HEAD
請求時不會回傳資源的內容部分,即:響應主體。這樣,咱們能夠不傳輸所有內容的狀況下,就能夠獲取服務器的響應頭信息。HEAD
方法常被用於客戶端查看服務器的性能。
POST
POST
請求會 向指定資源提交數據,請求服務器進行處理,如:表單數據提交、文件上傳等,請求數據會被包含在請求體中。POST
方法是非冪等
的方法,由於這個請求可能會建立新的資源或/和修改現有資源。
PUT
PUT
請求會身向指定資源位置上傳其最新內容,PUT
方法是冪等
的方法。經過該方法客戶端能夠將指定資源的最新數據傳送給服務器取代指定的資源的內容。
DELETE
DELETE
請求用於請求服務器刪除所請求URI
(統一資源標識符,Uniform Resource Identifier)所標識的資源。DELETE
請求後指定資源會被刪除,DELETE
方法也是冪等
的。
CONNECT
CONNECT
方法是HTTP/1.1
協議預留的,可以將鏈接改成管道方式的代理服務器。一般用於SSL加密服務器的連接與非加密的HTTP代理服務器的通訊。
OPTIONS
OPTIONS
請求與HEAD
相似,通常也是用於客戶端查看服務器的性能。 這個方法會請求服務器返回該資源所支持的全部HTTP請求方法,該方法會用’*’來代替資源名稱,向服務器發送OPTIONS
請求,能夠測試服務器功能是否正常。JavaScript的XMLHttpRequest對象進行CORS
跨域資源共享時,就是使用OPTIONS
方法發送嗅探請求,以判斷是否有對指定資源的訪問權限。 容許
TRACE
TRACE
請求服務器回顯其收到的請求信息,該方法主要用於HTTP請求的測試或診斷。
HTTP/1.1
以後增長的方法
在HTTP/1.1
標準制定以後,又陸續擴展了一些方法。其中使用中較多的是 PATCH
?方法:
PATCH
PATCH
方法出現的較晚,它在2010年的RFC 5789標準中被定義。PATCH
請求與PUT
請求相似,一樣用於資源的更新。兩者有如下兩點不一樣:
PATCH
通常用於資源的部分更新,而PUT
通常用於資源的總體更新。PATCH
會建立一個新的資源,而PUT
只會對已在資源進行更新。