HTTP的定義
HTTP (Hypertext Transfer Protocol) 即超文本傳輸協(xié)議,和 HTML (Hypertext Markup Language) 超文本標(biāo)記語?一起誕?鸠珠,用于在?絡(luò)上請求和傳輸 HTML 內(nèi)容。
超文本 (Hypertext)渐排,即「擴展型?本」灸蟆,指的是 HTML 中可以有鏈向別的?本的超鏈接 (Hyperlink)驯耻。
以上定義中 Hyper 有拓展的一層意思,互聯(lián)網(wǎng)創(chuàng)始之初炒考,人們就在思考如何更加方便的在互聯(lián)網(wǎng)傳輸信息,最初這些信息都是以文本形式進行傳輸斋枢,隨著互聯(lián)網(wǎng)信息越積約多,就急需一種讓文件之間互相關(guān)聯(lián)起來的方式來提高信息查找效率描姚,于是 HTML 這種在文本文件中可以指向別的文本的語言(Hypertext Markup Language 超文本標(biāo)記語言)就誕生了,隨后用戶傳輸這種文本的協(xié)議也誕生了也就是 HTTP 協(xié)議轩勘。
HTTP請求
method
通常是由一個動詞例如GET绊寻、POST或者一個名詞像OPITIONS、HEAD來定義客戶端的動作行為澄步。
通常客戶端的操作都是獲取資源(GET方法)或者發(fā)送HTML form表單值(POST方法)村缸。
路徑
獲取資源的路徑,通常是上下文中就很明顯的元素資源的URL,它沒有協(xié)議聋丝、域、或者TCP的端口百姓。
HTTP協(xié)議版本號
HTTP/1.1或者HTTP/2
headers
服務(wù)端表達其它信息的可選頭部
對于一些像POST這樣的方法况木,報文的body就包含了發(fā)送的資源,這與響應(yīng)報文的body類似火惊。
HTTP響應(yīng)
響應(yīng)報文包含了下面的元素:
- HTTP協(xié)議版本號屹耐。
- 一個狀態(tài)碼尸疆,以及失敗的原因惶岭。
- 一個狀態(tài)信息,這個信息是非權(quán)威的狀態(tài)碼描述信息症革,可以由服務(wù)端自行設(shè)定鸯旁。
- HTTP 頭量蕊,與請求頭部類似摩疑。
- 可選項,比起請求報文雷袋,響應(yīng)報文中更常見地包含獲取的資源body。
關(guān)于狀態(tài)碼
狀態(tài)碼(Status Code)
狀態(tài)碼全部表現(xiàn)為三位數(shù)字,用于對應(yīng)響應(yīng)結(jié)果的類型描述(如「200 請求成功」 「404 內(nèi)容未找到」)抱完,常見如下
1xx:臨時性消息刃泡;100(繼續(xù)發(fā)送)、101(正在切換協(xié)議)禁添。
2xx:成功桨踪;200(OK)、201(創(chuàng)建成功)锻离。
3xx:重定向;301(永久移除)卫键、302(暫時移動)虱朵、304(內(nèi)容未改變)。
4xx:客戶端錯誤卧秘;400(客戶端請求出錯)、401(認(rèn)證失斝吒!)、403(被禁止)治专、404(找不到內(nèi)容)。
5xx:服務(wù)器錯誤张峰;500(服務(wù)器內(nèi)部錯誤)、502(網(wǎng)關(guān)錯誤)撩荣。
知識重點
請求
請求的狀態(tài)行
包含方式(請求動詞)饶深、路徑、HTTP版本
HTTP消息頭(請求頭)
HTTP 消息頭允許客戶端和服務(wù)器通過 request和 response傳遞附加信息台猴。一個請求頭由名稱(不區(qū)分大小寫)后跟一個冒號“:”俱两,冒號后跟具體的值(不帶換行符)組成饱狂。該值前面的引導(dǎo)空白會被忽略宪彩。
請求體
在GET中一般為空
響應(yīng)
狀態(tài)行
包含HTTP版本、狀態(tài)碼、狀態(tài)信息
常見的狀態(tài)碼需要記牢
響應(yīng)頭
與上面的請求頭類似
響應(yīng)體
也就是下載內(nèi)容