《圖解HTTP》學(xué)習(xí)記錄四(HTTP的結(jié)構(gòu)與方法)

HTTP報(bào)文結(jié)構(gòu)

下圖是一個(gè)完整的HTTP報(bào)文的形式,一共分為三層:

  • 報(bào)文首部: 提供HTTP報(bào)文的信息猎拨,規(guī)定通信雙方所遵循的一些規(guī)則糊昙,請(qǐng)求報(bào)文和響應(yīng)報(bào)文的首部的關(guān)鍵字是不一樣的;
  • 空格:用來(lái)區(qū)分報(bào)文首部與報(bào)文主體鹤盒;
  • 報(bào)文主體:通信的實(shí)質(zhì)性內(nèi)容百炬,如:客戶端向服務(wù)器的請(qǐng)求內(nèi)容褐隆,服務(wù)器向客戶端的響應(yīng)內(nèi)容,也可以沒(méi)有內(nèi)容剖踊;

編碼

HTTP在傳輸過(guò)程中可以按照數(shù)據(jù)的原樣直接傳播庶弃,也能夠通過(guò)編碼壓縮的方式來(lái)提升傳輸速率。當(dāng)然德澈,在提升速率的同時(shí)是需要消耗一部分CPU的性能來(lái)進(jìn)行壓縮歇攻。

  • 報(bào)文(message):是HTTP通信中的基本單位,由8位組字節(jié)流組成梆造,通過(guò)HTTP通信傳輸缴守。
  • 實(shí)體(enity):作為請(qǐng)求或響應(yīng)的有效載荷數(shù)據(jù)被傳輸, 其內(nèi)容由實(shí)體首部和實(shí)體主體構(gòu)成镇辉。

通常來(lái)說(shuō)報(bào)文和實(shí)體是沒(méi)有區(qū)別的屡穗,但是當(dāng)傳輸過(guò)程中進(jìn)行編碼操作后,傳輸?shù)闹黧w便由報(bào)文變成了實(shí)體忽肛〈迳埃客戶端、服務(wù)器雙方約定相同的編碼形式屹逛,就可以對(duì)報(bào)文進(jìn)行解壓縮了础废。常用的內(nèi)容編碼有如下幾種:

  • gzip(GNU zip)
  • compress(UNIX系統(tǒng)的標(biāo)準(zhǔn)壓縮)
  • deflate(zlib)
  • identify(不進(jìn)行編碼)

HTTP的請(qǐng)求方法

  • GET:獲取資源汛骂,請(qǐng)求訪問(wèn)已被URI識(shí)別的資源。
  • POSTPOSTGET的方法很相似色迂,但是其主要目的是傳輸實(shí)體香缺,也就是用于傳遞大量數(shù)據(jù)至服務(wù)器的方法手销。
  • PUT:傳輸文件歇僧,如同F(xiàn)TP協(xié)議中上傳文件的方式一樣,要求在請(qǐng)求報(bào)文主體部分包含文件內(nèi)容锋拖,保存至請(qǐng)求URI指定的位置诈悍,由于本身不帶驗(yàn)證機(jī)制,導(dǎo)致無(wú)法保證服務(wù)器的安全性兽埃,基本上都是被禁用的侥钳。
  • DELETE:刪除文件,PUT的逆操作柄错。同PUT一樣舷夺,由于沒(méi)有驗(yàn)證機(jī)制,故基本上被禁用售貌。
  • HEAD:GET操作的閹割版给猾,只返回報(bào)文首部,不返回報(bào)文主體颂跨。
  • OPTIONS:查詢針對(duì)請(qǐng)求URI指定資源支持的方法敢伸。假若目標(biāo)URI支持GET,POST,OPTION,HEAD,則響應(yīng)報(bào)文中會(huì)出現(xiàn):Allow:GET,POST,OPTION,HEAD恒削;
  • TRACE:讓服務(wù)器端將請(qǐng)求通信環(huán)返回給客戶端的方法池颈。客戶端與服務(wù)器之間可能存在若干個(gè)代理或是網(wǎng)關(guān)钓丰,通過(guò)TRACE方法可以追蹤請(qǐng)求報(bào)文所經(jīng)過(guò)的路徑躯砰,查詢請(qǐng)求是怎樣被修改(或是篡改)的,但因?yàn)門RACE方法容易引發(fā)跨站追蹤携丁,所以也不常用弃揽。
  • CONNECT:要求在與代理服務(wù)器通信時(shí)建立隧道,常與SSL或TLS一起包裝使用则北,也就是HTTPS矿微。

HTTP狀態(tài)碼

在所有的響應(yīng)報(bào)文首部會(huì)借助狀態(tài)碼來(lái)告訴服務(wù)端對(duì)本次請(qǐng)求的處理結(jié)果,狀態(tài)碼以3位數(shù)字和原因短語(yǔ)構(gòu)成尚揣。第一位數(shù)字代表了響應(yīng)類別涌矢,第二位,第三位只有占位的意義:


狀態(tài)碼一共大概有60多種快骗,但常用的大概只有14種娜庇,接下來(lái)依次介紹:

  • 200 OK:這是最希望看到的結(jié)果塔次,表示服務(wù)器已經(jīng)成功處理了客戶端的請(qǐng)求并作出了正確的響應(yīng)。
  • 204 Not Content:表示服務(wù)器已成功處理客戶端的請(qǐng)求名秀,但響應(yīng)報(bào)文中不含實(shí)體的主體部分励负,也不允許返回實(shí)體主體。
  • 206 Partial Content:表示客戶端進(jìn)行了范圍請(qǐng)求匕得,服務(wù)器也成功的執(zhí)行了這部分的GET請(qǐng)求继榆。響應(yīng)報(bào)文中包含了Content-Range來(lái)表明返回實(shí)體主體的范圍。
  • 301 Moved Permanently:永久重定向汁掠,表明該資源已經(jīng)被分配了新的URI略吨,輸入老URI會(huì)自動(dòng)跳轉(zhuǎn)至新URI。
  • 302 Found:臨時(shí)重定向考阱,也表明該資源被分配了新的URI翠忠,但新的URI也可能發(fā)生改變。
  • 303 See Other:與302一樣乞榨,但多了一個(gè)限定條件秽之,要求客戶端能用GET方法來(lái)獲取資源。
    PS:實(shí)際上301,302,303響應(yīng)狀態(tài)碼返回時(shí)吃既,所有的瀏覽器都會(huì)將POST改為GET考榨,并刪除請(qǐng)求報(bào)文的主體。
  • 304 Not Modified: 該狀態(tài)碼表示客戶端附帶條件請(qǐng)求(帶有IF的首部字段)時(shí)态秧,未滿足條件時(shí)董虱,服務(wù)器卻允許訪問(wèn)資源的情況。304狀態(tài)碼返回時(shí)申鱼,不包含任何實(shí)體主體部分愤诱。當(dāng)我們?yōu)g覽緩存時(shí),常尘栌眩看到304狀態(tài)碼淫半。
  • 400 Bad Request:請(qǐng)求報(bào)文中存在語(yǔ)法錯(cuò)誤。
  • 401 Unauthorized·:表示該請(qǐng)求需要通過(guò)HTTP認(rèn)證(BASIC認(rèn)證或DIGEST認(rèn)證)匣砖。
  • 403 Forbidden:表示請(qǐng)求被服務(wù)器拒絕科吭,往往是客戶端所在IP地址未授權(quán)。
  • 404 Not Found:表明在服務(wù)器上找不到這個(gè)資源猴鲫,或服務(wù)器拒絕請(qǐng)求不想說(shuō)明理由時(shí)也能使用对人。
  • 500 Internal Server Error:服務(wù)器在執(zhí)行請(qǐng)求時(shí)出錯(cuò),可能是服務(wù)器語(yǔ)法錯(cuò)誤拂共。
  • 503 Service Unavailable:服務(wù)器暫時(shí)處于超負(fù)載(掛了)或正在維護(hù)中牺弄,暫時(shí)無(wú)法執(zhí)行請(qǐng)求。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宜狐,一起剝皮案震驚了整個(gè)濱河市势告,隨后出現(xiàn)的幾起案子蛇捌,更是在濱河造成了極大的恐慌,老刑警劉巖咱台,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件络拌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡回溺,警方通過(guò)查閱死者的電腦和手機(jī)春贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馅而,“玉大人祥诽,你說(shuō)我怎么就攤上這事譬圣∥凸В” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵厘熟,是天一觀的道長(zhǎng)屯蹦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)绳姨,這世上最難降的妖魔是什么登澜? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮飘庄,結(jié)果婚禮上脑蠕,老公的妹妹穿的比我還像新娘。我一直安慰自己跪削,他們只是感情好谴仙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碾盐,像睡著了一般晃跺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毫玖,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天掀虎,我揣著相機(jī)與錄音,去河邊找鬼付枫。 笑死烹玉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阐滩。 我是一名探鬼主播二打,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼叶眉!你這毒婦竟也來(lái)了址儒?” 一聲冷哼從身側(cè)響起芹枷,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莲趣,沒(méi)想到半個(gè)月后鸳慈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喧伞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年走芋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潘鲫。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翁逞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溉仑,到底是詐尸還是另有隱情挖函,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布浊竟,位于F島的核電站怨喘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏振定。R本人自食惡果不足惜必怜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望后频。 院中可真熱鬧梳庆,春花似錦、人聲如沸卑惜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)残揉。三九已至胧后,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抱环,已是汗流浹背壳快。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镇草,地道東北人眶痰。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像梯啤,于是被迫代替她去往敵國(guó)和親竖伯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容