HTTP 請(qǐng)求

HTTP 原理

HTTP 是應(yīng)用層協(xié)議座享,通過(guò) TCP 實(shí)現(xiàn)可靠傳輸帝嗡,能夠保證數(shù)據(jù)的完整性峡蟋、正確性坟桅。

C/S 架構(gòu)的交互流程

  1. 客戶端執(zhí)行網(wǎng)絡(luò)請(qǐng)求,從 URL 解析服務(wù)端的主機(jī)名
  2. 主機(jī)名解析成 IP 地址
  3. 從 URL 解析出端口號(hào)
  4. 建立客戶端到服務(wù)端的 TCP 連接
  5. 客戶端通過(guò)輸出流向服務(wù)端發(fā)送一條 HTTP 請(qǐng)求
  6. 服務(wù)端向客戶端回送一條 HTTP 響應(yīng)報(bào)文
  7. 客戶端從輸入流獲取報(bào)文
  8. 客戶端解析報(bào)文蕊蝗,關(guān)閉連接
  9. 客戶端將結(jié)果顯示在 UI

HTTP 請(qǐng)求方式

HTTP 常見(jiàn)請(qǐng)求方式有 GET仅乓、POST、DELETE蓬戚、PUT夸楣、HEAD、TRACE子漩、OPTIONS豫喧。

GET

用來(lái)獲取服務(wù)器中的某個(gè)資源

POST

用來(lái)向服務(wù)器傳遞數(shù)據(jù),比如遞交 HTML 表單

PUT

用來(lái)向服務(wù)器寫(xiě)入資源痛单。有些發(fā)布系統(tǒng)允許用戶創(chuàng)建 Web 頁(yè)面嘿棘,并用 PUT 直接將其傳輸?shù)?Web 服務(wù)器上

DELETE

用來(lái)請(qǐng)服務(wù)器刪除 URL 所指定的資源。但是旭绒,客戶端應(yīng)用程序無(wú)法保證刪除操作一定會(huì)被執(zhí)行。因?yàn)榻谷耍琀TTP 規(guī)范允許服務(wù)器在不通知客戶端的情況下撤銷(xiāo)請(qǐng)求

HEAD

與 GET 方法行為類(lèi)型挥吵,但是服務(wù)器在響應(yīng)中只返回首部。不會(huì)返回實(shí)體的主體部分花椭。這就允許客戶端在未獲取實(shí)際資源的情況下忽匈,對(duì)資源的首部進(jìn)行檢查。

TRACE

TRACE 方法允許客戶端在最終將請(qǐng)求發(fā)送給服務(wù)器時(shí)矿辽,看看它變成什么樣子丹允。TRACE 請(qǐng)求會(huì)在目的服務(wù)器端發(fā)起一個(gè)“環(huán)回”診斷郭厌。行程最后一站的服務(wù)器會(huì)彈回一條 TRACE 響應(yīng),并在響應(yīng)主體中攜帶它收到的原始請(qǐng)求報(bào)文雕蔽。這樣客戶端就可以查看在所有中間 HTTP 應(yīng)用程序組成的請(qǐng)求/響應(yīng)鏈上折柠,原始報(bào)文是否以及如何被毀壞或修改過(guò)。

OPTIONS

OPTIONS 方法請(qǐng)求 Web 服務(wù)器告知其支持的各種功能批狐∩仁郏可以詢問(wèn)服務(wù)器通常支持哪些方法,或者對(duì)某些特殊資源支持哪些方法(有些服務(wù)器可能只支持對(duì)一些特殊類(lèi)型對(duì)象使用特定的操作)嚣艇。這為客戶端應(yīng)用程序提供了一種手段承冰,使其不用實(shí)際訪問(wèn)那些資源就能判定訪問(wèn)各種資源的最優(yōu)方式。

HTTP 報(bào)文格式解析

HTTP 請(qǐng)求報(bào)文由請(qǐng)求行(request line)食零、請(qǐng)求頭部(header)困乒、空行和請(qǐng)求數(shù)據(jù) 4 個(gè)部分組成。

|請(qǐng)求方法 | 空格 | URL | 空格 | HTTP 版本 | 回車(chē)符 | 換行符 |
| ----------頭部字段名:值 --------- | 回車(chē)符 | 換行符 |
|------回車(chē)符 -----------|------- 換行符---------- |
|-------------------請(qǐng)求數(shù)據(jù)-------------------- |

1.起始行
報(bào)文的第一行就是起始行贰谣,在請(qǐng)求報(bào)文中用來(lái)說(shuō)明要以什么方式做什么請(qǐng)求娜搂,而在響應(yīng)報(bào)文中粗略說(shuō)明了報(bào)文的執(zhí)行結(jié)果。

2.首部字段
起始行后面有零個(gè)或者多個(gè)首部字段冈爹。每個(gè)首部字段都包含一個(gè)名字和一個(gè)值涌攻,為了便于解析,兩者之間用冒號(hào)(如 Connection:Keep-Alive)來(lái)分隔频伤。首部以一個(gè)空行結(jié)束恳谎。添加一個(gè)首部字段和添加新行一樣簡(jiǎn)單。

3.主體
首部字段的空行之后就是可選的報(bào)文主體憋肖,其中包含了所有類(lèi)型的數(shù)據(jù)因痛。請(qǐng)求主體中包括了要發(fā)給 Web 服務(wù)器的數(shù)據(jù);響應(yīng)主體中裝載了要返回給客戶端的數(shù)據(jù)岸更。起始行和首部都是結(jié)構(gòu)化的文本形式鸵膏,而主體可以包含任意的二進(jìn)制數(shù)據(jù)(如圖片、視頻怎炊、音軌谭企、軟件程序)。當(dāng)然评肆,主體中也可以包含文本债查。

響應(yīng)報(bào)文

HTTP 響應(yīng)也由 3 個(gè)部分組成,分別是:狀態(tài)行瓜挽、消息報(bào)頭盹廷、響應(yīng)正文。

<狀態(tài)行>
<響應(yīng)報(bào)文 header>
<空行>
[響應(yīng)報(bào)文內(nèi)容]

在響應(yīng)中唯一真正的區(qū)別在于第一行中用狀態(tài)信息代替了請(qǐng)求信息久橙。狀態(tài)行(status line)通過(guò)提供一個(gè)狀態(tài)碼來(lái)說(shuō)明請(qǐng)求的資源情況俄占。

狀態(tài)行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中管怠,HTTP-Version 表示服務(wù)器 HTTP 協(xié)議的版本;Status-Code 表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼缸榄;Reason-Phrase 表示狀態(tài)代碼的文本描述渤弛。狀態(tài)代碼由 3 位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類(lèi)別碰凶,有 5 中可能取值暮芭。

取值范圍 含義
100-199 指示信息-表示請(qǐng)求已經(jīng)接收,繼續(xù)處理
200-299 請(qǐng)求成功欲低。表示請(qǐng)求已經(jīng)被成功接收辕宏、理解
300-399 重定向。要完成請(qǐng)求必須做進(jìn)一步操作
400-499 客戶端錯(cuò)誤砾莱。請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)
500-599 服務(wù)器端錯(cuò)誤瑞筐。服務(wù)器未能實(shí)現(xiàn)合法請(qǐng)求

常見(jiàn)狀態(tài)代碼

代碼 狀態(tài) 說(shuō)明
200 OK 客戶端請(qǐng)求成功
400 Bad Request 客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解
401 Unauthorized 請(qǐng)求未經(jīng)授權(quán)
403 Forbidden 服務(wù)器收到請(qǐng)求腊瑟,但是拒絕提供服務(wù)
404 Not Found 請(qǐng)求資源不存在
500 Internal Server Error 服務(wù)器發(fā)生不可預(yù)期錯(cuò)誤
503 Server Unavailable 服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末聚假,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子闰非,更是在濱河造成了極大的恐慌膘格,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件财松,死亡現(xiàn)場(chǎng)離奇詭異瘪贱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辆毡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)菜秦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人舶掖,你說(shuō)我怎么就攤上這事球昨。” “怎么了眨攘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵主慰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鲫售,道長(zhǎng)河哑,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任龟虎,我火速辦了婚禮,結(jié)果婚禮上沙庐,老公的妹妹穿的比我還像新娘鲤妥。我一直安慰自己佳吞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布棉安。 她就那樣靜靜地躺著底扳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贡耽。 梳的紋絲不亂的頭發(fā)上衷模,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蒲赂,去河邊找鬼阱冶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滥嘴,可吹牛的內(nèi)容都是我干的木蹬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼若皱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镊叁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起走触,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晦譬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后互广,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體敛腌,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年兜辞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迎瞧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逸吵,死狀恐怖凶硅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扫皱,我是刑警寧澤足绅,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站韩脑,受9級(jí)特大地震影響氢妈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜段多,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一首量、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦加缘、人聲如沸鸭叙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沈贝。三九已至,卻和暖如春勋乾,著一層夾襖步出監(jiān)牢的瞬間宋下,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工辑莫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留学歧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓摆昧,卻偏偏與公主長(zhǎng)得像撩满,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绅你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • 本篇文章篇幅比較長(zhǎng)伺帘,先來(lái)個(gè)思維導(dǎo)圖預(yù)覽一下。 一忌锯、概述 1.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 55,022評(píng)論 24 557
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族伪嫁,HTTP屬于它內(nèi)部的一個(gè)子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,444評(píng)論 0 20
  • 本文是《圖解HTTP》讀書(shū)筆記的第二篇偶垮,主要包括此書(shū)的第六章內(nèi)容张咳,因?yàn)榈诹碌膬?nèi)容較多,而且比較重要似舵,所以單獨(dú)寫(xiě)為...
    lijiankun24閱讀 1,364評(píng)論 0 6
  • 當(dāng)我們?cè)跒g覽器的地址欄輸入 www.linux178.com 脚猾,然后回車(chē),回車(chē)這一瞬間到看到頁(yè)面到底發(fā)生了什么呢砚哗?...
    Ddaidai閱讀 1,216評(píng)論 0 12
  • 20歲這年龙助,一直很想擁有屬于自己的一本原創(chuàng)書(shū),總覺(jué)得自己喜歡寫(xiě)蛛芥,也可以寫(xiě)出好的文章提鸟,每次到了真正要寫(xiě)的時(shí)候,咬...
    墨跡流痕閱讀 327評(píng)論 4 6