HTTP 基礎(chǔ)知識(shí):掌握 Web 通信的基礎(chǔ)

HTTP(Hypertext Transfer Protocol掂墓,超文本傳輸協(xié)議)是用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù)的一種協(xié)議谦纱,對(duì)于網(wǎng)絡(luò)開(kāi)發(fā)人員來(lái)說(shuō),理解這一協(xié)議是至關(guān)重要的君编。由于其廣泛的應(yīng)用跨嘉,除了在網(wǎng)頁(yè)應(yīng)用傳輸數(shù)據(jù)之外,它還被應(yīng)用于物聯(lián)網(wǎng)(IoT)中的數(shù)據(jù)和命令傳輸吃嘿。

HTTP 協(xié)議的第一個(gè)版本只有一個(gè)方法祠乃,即 GET,用于從服務(wù)器請(qǐng)求頁(yè)面兑燥。服務(wù)器的響應(yīng)總是一個(gè) HTML 頁(yè)面亮瓷。要了解 HTTP 協(xié)議最初的簡(jiǎn)單設(shè)計(jì),請(qǐng)參閱原始規(guī)范贪嫂,該規(guī)范文檔僅有一頁(yè)寺庄。

從最初的 0.9 版本開(kāi)始,HTTP 已經(jīng)發(fā)展了幾個(gè)版本力崇。當(dāng)前的版本是 1.1斗塘,并于 2014 年最后一次修訂。

工作原理

HTTP作為互聯(lián)網(wǎng)協(xié)議之一亮靴,它是基于文本的命令和響應(yīng)協(xié)議馍盟,使用客戶端-服務(wù)器通信模型。

客戶端發(fā)出請(qǐng)求茧吊,服務(wù)器做出響應(yīng)贞岭。HTTP 協(xié)議是無(wú)狀態(tài)協(xié)議八毯,意味著服務(wù)器不需要存儲(chǔ)會(huì)話信息,每個(gè)請(qǐng)求都是獨(dú)立的瞄桨。更多信息

這意味著:

所有請(qǐng)求來(lái)自客戶端(如您的瀏覽器)话速。

服務(wù)器對(duì)請(qǐng)求作出響應(yīng)。

請(qǐng)求(命令)和響應(yīng)均為可讀文本格式芯侥。

請(qǐng)求彼此獨(dú)立泊交,服務(wù)器不需要跟蹤請(qǐng)求。

請(qǐng)求與響應(yīng)結(jié)構(gòu)

請(qǐng)求和響應(yīng)的消息結(jié)構(gòu)相同柱查,如下所示:

一個(gè)請(qǐng)求包括:

命令或請(qǐng)求+可選的頭部+可選的內(nèi)容體廓俭。

一個(gè)響應(yīng)包括:

狀態(tài)碼+可選的頭部+可選的內(nèi)容體

使用簡(jiǎn)單的CRLF(回車和換行)組合來(lái)分隔各部分唉工,單獨(dú)的空行(CRLF)表示頭部結(jié)束研乒。

如果請(qǐng)求或響應(yīng)包含消息體,則這一情況在頭部中表明淋硝。

消息體的存在通過(guò)內(nèi)容長(zhǎng)度(Content-Length)或傳輸編碼(Transfer-Encoding)頭域來(lái)信號(hào)化雹熬。請(qǐng)求消息的構(gòu)架與方法語(yǔ)義無(wú)關(guān),即使該方法沒(méi)有定義任何消息體的用途奖地。 – 參見(jiàn)RFC 7230第 3.3 節(jié)橄唬。

請(qǐng)注意:消息體后不跟隨 CRLF。參見(jiàn)RFC 7230第 3.5 節(jié)参歹。

HTTP 請(qǐng)求詳解

我們之前已經(jīng)看到了一般的請(qǐng)求和響應(yīng)格式仰楚,現(xiàn)在我們將更詳細(xì)地介紹請(qǐng)求消息。

起始行是必須的犬庇,其結(jié)構(gòu)如下:

方法+ 資源路徑 + 協(xié)議版本

例如僧界,如果我們嘗試訪問(wèn)www.testsite5.com上的網(wǎng)頁(yè) testpage.htm,請(qǐng)求的起始行將是:

GET /test.htm HTTP/1.1

其中:

GET是方法

/testpage.htm是資源的相對(duì)路徑

HTTP/1.1是我們使用的協(xié)議版本

注釋:

相對(duì)路徑不包括域名臭挽。

Web 瀏覽器使用我們輸入的 URL 來(lái)創(chuàng)建資源的相對(duì) URI捂襟。

注意:URL(統(tǒng)一資源定位符)用于網(wǎng)頁(yè),它是URI(統(tǒng)一資源標(biāo)識(shí)符)的一個(gè)例子欢峰。

瀏覽器實(shí)際上不顯示 HTTP 請(qǐng)求葬荷,只能通過(guò)特殊工具如http header live(Firefox)查看。

HTTP 與 URL

大多數(shù)人熟悉在 Web 瀏覽器中輸入 URL纽帖。通吵桎觯看起來(lái)像這樣:

URL 還可以包含通常由瀏覽器隱藏的端口,但您可以手動(dòng)包括它懊直,如下圖所示:

這告知網(wǎng)頁(yè)瀏覽器資源的地址以及檢索資源所使用的協(xié)議(HTTP)扒吁。

HTTP是從服務(wù)器到客戶端傳輸資源(網(wǎng)頁(yè)、圖片室囊、視頻等)的傳輸協(xié)議雕崩。

HTTP 響應(yīng)和響應(yīng)代碼

每個(gè)請(qǐng)求都有一個(gè)響應(yīng)魁索。響應(yīng)包括:

狀態(tài)碼描述

一個(gè)或多個(gè)可選的頭部

可選的消息主體,可以包括多行盼铁,甚至二進(jìn)制數(shù)據(jù)

響應(yīng)狀態(tài)碼分為 5 組粗蔚,每組有其含義和三位數(shù)字代碼:

1xx– 信息性

2xx– 成功

3xx– 多種選擇

4xx– 客戶端錯(cuò)誤

5xx– 服務(wù)器錯(cuò)誤

例如,一個(gè)成功的頁(yè)面請(qǐng)求將返回一個(gè)200響應(yīng)碼捉貌,一個(gè)不成功的請(qǐng)求將返回一個(gè)400響應(yīng)碼支鸡。

您可以在這里找到完整的列表及其含義。

請(qǐng)求響應(yīng)示例

我們將檢查訪問(wèn)簡(jiǎn)單網(wǎng)頁(yè)(testpage.htm)時(shí)的請(qǐng)求和響應(yīng)趁窃。

這是我在瀏覽器地址欄中輸入的:

這是瀏覽器顯示的響應(yīng):

以下是幕后發(fā)生的HTTP請(qǐng)求-響應(yīng)的屏幕截圖:

注意,瀏覽器自動(dòng)插入請(qǐng)求頭急前,同樣地醒陆,Web 服務(wù)器也自動(dòng)插入響應(yīng)頭。請(qǐng)求中沒(méi)有正文內(nèi)容裆针。響應(yīng)中的正文內(nèi)容是網(wǎng)頁(yè)刨摩,在瀏覽器中顯示,并不由實(shí)時(shí)頭部工具顯示世吨。

請(qǐng)求類型

到目前為止澡刹,我們還未提及請(qǐng)求類型,但我們?cè)谑纠幸呀?jīng)見(jiàn)到了 GET 請(qǐng)求類型耘婚。

GET請(qǐng)求類型或方法用于從 Web 服務(wù)器請(qǐng)求資源罢浇。GET 是最常用的請(qǐng)求類型,并且是原始 HTTP 規(guī)范中唯一的請(qǐng)求類型沐祷。

請(qǐng)求類型嚷闭、方法或動(dòng)詞

HTTP 協(xié)議現(xiàn)在支持 8 種請(qǐng)求類型,也稱為方法或動(dòng)詞赖临,它們是:

GET – 從服務(wù)器請(qǐng)求資源

POST – 向服務(wù)器提交資源(例如胞锰,文件上傳)

PUT – 與 POST相似,但用于替換資源

DELETE – 從服務(wù)器刪除資源

HEAD – 類似 GET兢榨,但只返回頭部而不返回內(nèi)容

OPTIONS – 獲取資源的選項(xiàng)

PATCH – 對(duì)資源應(yīng)用修改

TRACE – 執(zhí)行消息回環(huán)

在今天的 Internet 上嗅榕,GET(獲取網(wǎng)頁(yè))和POST(提交 Web 表單)方法是最常使用的。

其他方法在與 Web 和物聯(lián)網(wǎng) APIs 工作時(shí)使用吵聪,尤其是 PUT凌那、DELETE 和 HEAD。

源于:http://www.steves-internet-guide.com/http-basics/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末暖璧,一起剝皮案震驚了整個(gè)濱河市案怯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澎办,老刑警劉巖嘲碱,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件金砍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡麦锯,警方通過(guò)查閱死者的電腦和手機(jī)恕稠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扶欣,“玉大人鹅巍,你說(shuō)我怎么就攤上這事×响簦” “怎么了骆捧?”我有些...
    開(kāi)封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)髓绽。 經(jīng)常有香客問(wèn)我敛苇,道長(zhǎng),這世上最難降的妖魔是什么顺呕? 我笑而不...
    開(kāi)封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任枫攀,我火速辦了婚禮,結(jié)果婚禮上株茶,老公的妹妹穿的比我還像新娘来涨。我一直安慰自己,他們只是感情好启盛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布蹦掐。 她就那樣靜靜地躺著,像睡著了一般驰徊。 火紅的嫁衣襯著肌膚如雪笤闯。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天棍厂,我揣著相機(jī)與錄音颗味,去河邊找鬼。 笑死牺弹,一個(gè)胖子當(dāng)著我的面吹牛浦马,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播张漂,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晶默,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了航攒?” 一聲冷哼從身側(cè)響起磺陡,我...
    開(kāi)封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后币他,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體坞靶,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年蝴悉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彰阴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拍冠,死狀恐怖尿这,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庆杜,我是刑警寧澤射众,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晃财,受9級(jí)特大地震影響责球,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拓劝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘉裤。 院中可真熱鬧郑临,春花似錦、人聲如沸屑宠。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)典奉。三九已至躺翻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卫玖,已是汗流浹背公你。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留假瞬,地道東北人陕靠。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像脱茉,于是被迫代替她去往敵國(guó)和親剪芥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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