請(qǐng)求頭響應(yīng)頭格式
http協(xié)議中何缓,客戶端和服務(wù)端通過發(fā)送純文本(ASCII)消息的方式進(jìn)行通信油坝,客戶端發(fā)送請(qǐng)求(requests)到服務(wù)端盒让,服務(wù)端發(fā)送響應(yīng)(responses)到客戶端赋续。
請(qǐng)求消息格式
1.請(qǐng)求行,例如:GET /images/logo.png HTTP/1.1
2.請(qǐng)求頭,例如:Accept: text/plain
3.空行
4.可選擇的請(qǐng)求體
例子:
GET /index.html HTTP/1.1
Host: www.example.com
響應(yīng)消息格式
1.包含狀態(tài)碼的狀態(tài)行囊陡,例如:HTTP/1.1 200 OK
2.響應(yīng)頭,例如:Content-Type: text/html
3.空行
4.可選擇的消息體
例子:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close<html> <head> <title>An Example Page</title> </head> <body> Hello World, this is a very simple HTML document. </body> </html>
請(qǐng)求方法
為了標(biāo)識(shí)特定資源需要特定的行為訪問掀亥,HTTP協(xié)議定義了多種請(qǐng)求方法撞反。這種特定資源是什么樣的,是已有的數(shù)據(jù)搪花,還有動(dòng)態(tài)生成的遏片?主要依賴于服務(wù)端實(shí)現(xiàn)。通常來說這種資源對(duì)應(yīng)一個(gè)文件或者屬于服務(wù)端的一個(gè)可執(zhí)行輸出撮竿。
HTTP/1.0規(guī)范定義三種請(qǐng)求方法:GET, POST, HEAD吮便。HTTP/1.1規(guī)范又增加了五種:OPTIONS, PUT, DELETE, TRACE,CONNECT。
GET
用來請(qǐng)求特定資源幢踏,規(guī)范規(guī)定使用GET方法應(yīng)該只是用來獲取數(shù)據(jù)髓需,不能有其他行為。其他HTTP方法也有類似準(zhǔn)則房蝉,實(shí)際就是規(guī)范定義的每種HTTP方法的作用很單一僚匆,不建議在HTTP方法上應(yīng)用其他行為。
HEAD
和GET請(qǐng)求類似搭幻,但是HEAD請(qǐng)求的響應(yīng)體中不應(yīng)該包含響應(yīng)體咧擂,只是用來獲取響應(yīng)頭中的元信息,這樣就不用傳輸整個(gè)響應(yīng)內(nèi)容檀蹋,節(jié)省流量松申。
POST
請(qǐng)求服務(wù)端接受請(qǐng)求體中的整個(gè)實(shí)體作為給定URI資源的一部分,這些實(shí)體可以是表單數(shù)據(jù)俯逾,數(shù)據(jù)庫中的項(xiàng)贸桶,新聞組,郵件列表纱昧,評(píng)論等刨啸。
PUT
請(qǐng)求把封閉的實(shí)體存儲(chǔ)在給定的URI下,如果這個(gè)URI對(duì)應(yīng)的資源已經(jīng)存在识脆,那么會(huì)修改這個(gè)資源设联;如果這個(gè)URI對(duì)應(yīng)的資源不存在,服務(wù)器會(huì)根據(jù)URI創(chuàng)建一個(gè)新資源灼捂。
DELETE
請(qǐng)求刪除指定資源离例。
TRACE
請(qǐng)求打印接受到的請(qǐng)求,這樣客戶端就可以看到中間服務(wù)做了哪些改變或者新增了哪些東西悉稠。
OPTIONS
請(qǐng)求返回針對(duì)特定URL服務(wù)器支持哪些HTTP方法宫蛆,這樣可以用來檢查web服務(wù)器的功能,通過請(qǐng)求*
而不是特定資源的方式。
CONNECT
請(qǐng)求把連接轉(zhuǎn)成透明的TCP/IP通道耀盗,通常用于使用非加密的HTTP代理實(shí)現(xiàn)HTTPS想虎。
PATCH
適用于修改資源的一部分。
在規(guī)范中定義的這些請(qǐng)求方法是語義化的叛拷,并且是可依賴的舌厨。任何客戶端都可以使用任何請(qǐng)求方法召嘶,服務(wù)端也可以配置成支持任何這些請(qǐng)求方法的組合狰挡。
實(shí)際上這些請(qǐng)求方法可以隨意定義,沒有數(shù)量限制花竞,不過你自己定義出來的請(qǐng)求方法會(huì)被認(rèn)為是不安全并且是非冪等的署浩。
總結(jié):這些請(qǐng)求方法本質(zhì)上沒有區(qū)別揉燃,最終都是TCP請(qǐng)求,唯一的區(qū)別就是每個(gè)請(qǐng)求方法筋栋,使用的時(shí)候炊汤,規(guī)范規(guī)定的使用格式不同,原則上必須按照規(guī)范規(guī)定的格式使用弊攘,其實(shí)也可以違反規(guī)范使用婿崭,比如你可以使用GET方法請(qǐng)求數(shù)據(jù),也可以使用GET方法提交數(shù)據(jù)肴颊,當(dāng)然你可以用POST方法提交數(shù)據(jù)氓栈,也可以用POST方法獲取數(shù)據(jù)。
做好前端開發(fā)必須對(duì)HTTP的相關(guān)知識(shí)有所了解婿着,所以我創(chuàng)建了一個(gè)專題前端必備HTTP技能專門收集前端相關(guān)的HTTP知識(shí)授瘦,歡迎關(guān)注,投稿竟宋。
資料來源:
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol