6.入門:HTTP入門

什么是HTTP?

在Web應(yīng)用中贰剥,服務(wù)器把網(wǎng)頁(yè)傳給瀏覽器,實(shí)際上就是把網(wǎng)頁(yè)的HTML代碼發(fā)送給瀏覽器筷频,讓瀏覽器顯示出來(lái)蚌成。而瀏覽器和服務(wù)器之間的傳輸協(xié)議是HTTP,所以:

  • HTML是超文本標(biāo)記語(yǔ)言(英語(yǔ):HyperText Markup Language凛捏,簡(jiǎn)稱:HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言担忧,會(huì)HTML,就可以編寫網(wǎng)頁(yè)葵袭;
  • HTTP是在網(wǎng)絡(luò)上傳輸HTML的協(xié)議涵妥,所以叫做超文本傳輸協(xié)議,用于瀏覽器和服務(wù)器的通信。

請(qǐng)求與響應(yīng)

服務(wù)器與瀏覽器的交互
  • 瀏覽器負(fù)責(zé)發(fā)起請(qǐng)求
  • 服務(wù)器在 80 端口接收請(qǐng)求
  • 服務(wù)器負(fù)責(zé)返回內(nèi)容(響應(yīng))
  • 瀏覽器負(fù)責(zé)下載響應(yīng)內(nèi)容
    HTTP 的作用就是指導(dǎo)瀏覽器和服務(wù)器如何進(jìn)行溝通蓬网。

curl 命令

curl是一種命令行工具窒所,作用是發(fā)出網(wǎng)絡(luò)請(qǐng)求,然后得到和提取數(shù)據(jù)帆锋,顯示在"標(biāo)準(zhǔn)輸出"(stdout)上面吵取。

  • 語(yǔ)法
    $ curl [option] [url]
  • 常見參數(shù)
  1. 如果要把這個(gè)網(wǎng)頁(yè)保存下來(lái),可以使用-o參數(shù)锯厢,這就相當(dāng)于使用wget命令了皮官。
    $ curl -o [文件名] [url]
  2. 有的網(wǎng)址是自動(dòng)跳轉(zhuǎn)的。使用-L參數(shù)实辑,curl就會(huì)跳轉(zhuǎn)到新的網(wǎng)址捺氢。
    $ curl -L [url]
  3. -i參數(shù)可以顯示http response的頭信息,連同網(wǎng)頁(yè)代碼一起剪撬。
    $ curl -i [url]
  4. -v參數(shù)可以顯示一次http通信的整個(gè)過(guò)程摄乒,包括端口連接和http request頭信息。
    $ curl -v [url]
  5. curl默認(rèn)的HTTP動(dòng)詞是GET残黑,使用-X參數(shù)可以支持其他動(dòng)詞馍佑。
    $ curl -X POST [url]
    $ curl -X DELETE [url]
  6. 發(fā)送表單信息
    -發(fā)送表單信息有GET和POST兩種方法。GET方法相對(duì)簡(jiǎn)單梨水,只要把數(shù)據(jù)附在網(wǎng)址后面就行拭荤。
    $ curl example.com/form.cgi?data=xxx
    -POST方法必須把數(shù)據(jù)和網(wǎng)址分開,curl就要用到--data參數(shù)疫诽。
    $ curl -X POST --data "data=xxx" example.com/form.cgi

請(qǐng)求示例

curl -s -v -H "Agmaps: xxx" -- "https://www.baidu.com"

用 curl 創(chuàng)造一個(gè)請(qǐng)求野崇,并得到響應(yīng)

  • 請(qǐng)求的內(nèi)容為
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.59.0
Accept: */*
Agmaps: xxx

curl -X POST -s -v -H "Agmaps: xxx" -- "Agmaps://www.baidu.com"

  • 請(qǐng)求的內(nèi)容為
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.59.0
Accept: */*
Agmaps: xxx

curl -X POST -d "Agmaps" -s -v -H "Agmaps: xxx" -- "https://www.baidu.com"

  • 請(qǐng)求的內(nèi)容為
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.59.0
Accept: */*
Agmaps: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

Agmaps

請(qǐng)求格式

1 動(dòng)詞 路徑 協(xié)議/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.59.0
3 
4 要上傳的數(shù)據(jù)
  1. 請(qǐng)求最多包含四部分沦泌,最少包含三部分孝情。(也就是說(shuō)第四部分可以為空)
  2. 第三部分永遠(yuǎn)都是一個(gè)回車(\n)
  3. 動(dòng)詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
  4. 這里的路徑包括「查詢參數(shù)」龄广,但不包括「錨點(diǎn)」
  5. 如果你沒有寫路徑帅腌,那么路徑默認(rèn)為 /
  6. 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式

用 Chrome 發(fā)請(qǐng)求

  1. 打開 Network
  2. 地址欄輸入網(wǎng)址
  3. 在 Network 點(diǎn)擊绿满,查看 request亿胸,點(diǎn)擊「view source」
  4. 點(diǎn)擊「view source」
  5. 點(diǎn)擊「view source」
  6. 點(diǎn)擊「view source」
  7. 點(diǎn)了汹想?可以看到請(qǐng)求的前三部分了
  8. 如果有請(qǐng)求的第四部分追葡,那么在 FormData 或 Payload 里面可以看到

響應(yīng)示例

上面三個(gè)請(qǐng)求示例腺律,前兩個(gè)請(qǐng)求對(duì)應(yīng)的響應(yīng)分別為

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2443
Content-Type: text/html
Date: Tue, 22 May 2018 12:31:38 GMT
Etag: "588603ec-98b"
Last-Modified: Mon, 23 Jan 2017 13:23:56 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

<!DOCTYPE html>
<!--STATUS OK--><html> <head> 后面太長(zhǎng),省略了……
HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 17931
Content-Type: text/html
Date: Tue, 22 May 2018 12:31:38 GMT
Etag: "54d9749e-460b"
Server: bfe/1.0.8.18

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 后面太長(zhǎng)宜肉,省略了……
  1. GET 請(qǐng)求和 POST 請(qǐng)求對(duì)應(yīng)的響應(yīng)可以一樣匀钧,也可以不一樣
  2. 響應(yīng)的第四部分可以很長(zhǎng)很長(zhǎng)很長(zhǎng)

響應(yīng)格式

1 協(xié)議/版本號(hào) 狀態(tài)碼 狀態(tài)解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內(nèi)容

  • 狀態(tài)碼詳見HTTP狀態(tài)碼-維基百科,是服務(wù)器對(duì)瀏覽器說(shuō)的話
  • 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
  • 第 2 部分中的 Content-Type 遵循 MIME 規(guī)范

用 Chrome 查看響應(yīng)

  1. 打開 Network
  2. 輸入網(wǎng)址
  3. 選中第一個(gè)響應(yīng)
  4. 查看 Response Headers谬返,點(diǎn)擊「view source」之斯,點(diǎn)擊「view source」,點(diǎn)擊「view source」
  5. 你會(huì)看到響應(yīng)的前兩部分
  6. 查看 Response 或者 Preview遣铝,你會(huì)看到響應(yīng)的第 4 部分
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佑刷,一起剝皮案震驚了整個(gè)濱河市莉擒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘫絮,老刑警劉巖涨冀,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異麦萤,居然都是意外死亡鹿鳖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門壮莹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翅帜,“玉大人,你說(shuō)我怎么就攤上這事命满±缘危” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵周荐,是天一觀的道長(zhǎng)狭莱。 經(jīng)常有香客問我,道長(zhǎng)概作,這世上最難降的妖魔是什么腋妙? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮讯榕,結(jié)果婚禮上骤素,老公的妹妹穿的比我還像新娘。我一直安慰自己愚屁,他們只是感情好济竹,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霎槐,像睡著了一般送浊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丘跌,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天袭景,我揣著相機(jī)與錄音,去河邊找鬼闭树。 笑死耸棒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的报辱。 我是一名探鬼主播与殃,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了幅疼?” 一聲冷哼從身側(cè)響起米奸,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衣屏,沒想到半個(gè)月后躏升,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狼忱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年膨疏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钻弄。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佃却,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窘俺,到底是詐尸還是另有隱情饲帅,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布瘤泪,位于F島的核電站灶泵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏对途。R本人自食惡果不足惜赦邻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望实檀。 院中可真熱鬧惶洲,春花似錦、人聲如沸膳犹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)须床。三九已至铐料,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豺旬,已是汗流浹背余赢。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哈垢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓扛拨,卻偏偏與公主長(zhǎng)得像耘分,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361