HTTP的請求與響應(yīng)

Server + Client + HTTP

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

一、請求


1. 請求示例

  1. curl -s -v -H "xxx: yyy" -- "https://www.baidu.com"
    請求內(nèi)容
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.60.0
Accept: */*
xxx: yyy

  1. curl -X POST -s -v -H "xxx: yyy" -- "https://www.baidu.com"
    請求內(nèi)容
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.60.0
Accept: */*
xxx: yyy

  1. curl -X POST -d "x12345" -s -v -H "xxx: yyy" -- "https://www.baidu.com"
    請求內(nèi)容
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.60.0
Accept: */*
xxx: yyy
Content-Length: 6
Content-Type: application/x-www.form-urlencoded

x12345

2. 請求的格式

一 動詞 路徑 協(xié)議/版本號
二 Key1: value1
   Key2: value2
   Key2: value3
   Content-Type: application/x-www-form-urlencoded
   Host: www.baidu.com
   User-Agent: curl/7.60.0
三 回車(\n)
四 要上傳的數(shù)據(jù)
  1. 請求最多包含四部分,最少包含三部分,第四部分可以為空
  2. 第三部分永遠(yuǎn)都是一個(gè)回車,用于分隔第二和第四部分
  3. 動詞有 GET\POST\PUT\PATCH\DELETE\HEAD\OPTIONS 等
  4. 這里的路徑包括 [查詢參數(shù)],但不包括 [錨點(diǎn)]
  5. 如果你沒有寫路徑筹裕,默認(rèn)路徑為 /
  6. 第二部分中的Content-Type 標(biāo)注了第四部分的格式

3. 使用Chrome開發(fā)者工具查看 HTTP 請求內(nèi)容

  1. 打開Network(單擊鼠標(biāo)右鍵、F12窄驹、Ctrl + Shirft + I )
  2. 地址欄輸入網(wǎng)址
  3. 點(diǎn)開Network朝卒,查看 request,點(diǎn)擊 [view source]
  4. 點(diǎn)擊 [view source]乐埠,點(diǎn)擊 [view source]抗斤,點(diǎn)擊 [view source]
  5. 如果有請求的第四部分,在FormData 或 Payload可以看到

二丈咐、響應(yīng)


1. 響應(yīng)示例

  1. curl -s -v -H "xxx: yyy" -- "https://www.baidu.com"
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-tra                                                                               nsform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Sun, 26 Aug 2018 11:37:04 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>
后面省略......
  1. curl -X POST -s -v -H "xxx: yyy" -- "https://www.baidu.com"
< HTTP/1.1 302 Found
< Connection: Keep-Alive
< Content-Length: 17931
< Content-Type: text/html
< Date: Sun, 26 Aug 2018 11:42:16 GMT
< Etag: "54d97488-460b"
< Server: bfe/1.0.8.18
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
后面省略......
  1. GET請求和POST請求對應(yīng)的響應(yīng)可以一樣瑞眼,也可以不一樣
  2. 響應(yīng)的第四部分可以很長很長

2. 響應(yīng)的格式

一   協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
二   Key1: value1
     Key2: value2
     Key3: value3
     Content-Length: 17931
     Content-Type: text/html
三   回車
四   要下載的內(nèi)容
  • 狀態(tài)碼要背,是服務(wù)器對瀏覽器說的話
    • 1xx 不常用
    • 2xx 表示成功
    • 3xx 表示滾吧
    • 4xx 表示你丫錯(cuò)了
    • 5xx 表示好吧棵逊,我錯(cuò)了
  • 狀態(tài)解釋沒什么用
  • 第二部分的Content-Type 標(biāo)注了第四部分的格式伤疙,且遵循 MIME 規(guī)范

3. 使用Chrome開發(fā)者工具查看 HTTP 響應(yīng)內(nèi)容

  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. 看到響應(yīng)的前兩部分
  6. 查看Response 后者 Preview,看到響應(yīng)的第四部分

三蛙讥、補(bǔ)充

URL 全稱: Uniform Resource Locator(統(tǒng)一資源定位符)
HTML 全稱:Hypertext Markup Language(超文本標(biāo)記語言)
HTTP 全稱:Hypertext Transfer Protocol(超文本傳輸協(xié)議)
DNS 全稱:Domain Name System(域名系統(tǒng))


URI 分為URI 和 URN锯蛀。
URL 是一種 URI,就是我們常說的網(wǎng)址次慢。
URL 包括:協(xié)議旁涤、域名、端口號迫像、路徑劈愚、查詢字符串、錨點(diǎn)


URL常見組成

HTTP 的默認(rèn)服務(wù)端口是:80
DNS 的作用:輸入域名闻妓,輸出對應(yīng) IP
我想讓 baidu.com 域名指向 127.0.0.1 這個(gè) IP 應(yīng)該:修改本地 hosts 文件


curl -s -v -- "https://www.baidu.com" 返回的請求是:
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.60.0
Accept: */*
回車


一個(gè)合法的 HTTP 請求第一行:GET / HTTP/1.1

一個(gè)合法的 HTTP 響應(yīng)第一行: HTTP/1.1 200 OK

一個(gè)合法的 HTTP 請求第二部分:
Host: xiedaimala.com
User-Agent: curl/7.60.0
Accept: */*


HTTP 請求中的 Content-Type:表示請求第4部分內(nèi)容的格式
HTTP 響應(yīng)中的 Content-Type:表示響應(yīng)第4部分內(nèi)容的格式


HTTP 響應(yīng)中狀態(tài)碼 200:OK 表示請求已成功菌羽,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。實(shí)際的響應(yīng)將取決于所使用的請求方法纷闺。在GET請求中算凿,響應(yīng)將包含與請求的資源相對應(yīng)的實(shí)體。在POST請求中犁功,響應(yīng)將包含描述或操作結(jié)果的實(shí)體氓轰。


HTTP 響應(yīng)中狀態(tài)碼 301:Moved Permanently 表示被請求的資源已永久移動到新位置,并且將來任何對此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個(gè) URI 之一浸卦。


HTTP 響應(yīng)中狀態(tài)碼 302:Found 表示 Moved Temporarily署鸡,要求客戶端執(zhí)行臨時(shí)的重定向,并且客戶端可以繼續(xù)向原有地址發(fā)送以后的請求限嫌。


HTTP 響應(yīng)中狀態(tài)碼 403:Forbidden 表示沒有權(quán)限訪問此站靴庆,服務(wù)器接收到請求但拒絕提供服務(wù)。


HTTP 響應(yīng)中狀態(tài)碼 404:HTTP 404 或 Not Found 錯(cuò)誤信息是 HTTP 的一種“標(biāo)準(zhǔn)回應(yīng)信息”怒医,此信息代表客戶端在瀏覽網(wǎng)頁時(shí)炉抒,服務(wù)器無法正常提供信息,或是服務(wù)器無法回應(yīng)且不知原因稚叹。404錯(cuò)誤信息可能與“Server Not Found”(無法找到服務(wù)器)或其他類似信息產(chǎn)生混淆焰薄。


HTTP 響應(yīng)中狀態(tài)碼 500:Internal Server Error 表示通用錯(cuò)誤信息,服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況扒袖,導(dǎo)致了它無法完成對請求的處理塞茅,沒用給出具體錯(cuò)誤信息。


HTTP 響應(yīng)中狀態(tài)碼 502:Bad Gateway 表示作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時(shí)季率,從上游服務(wù)器接收到無效的響應(yīng)野瘦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市飒泻,隨后出現(xiàn)的幾起案子鞭光,更是在濱河造成了極大的恐慌,老刑警劉巖泞遗,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衰猛,死亡現(xiàn)場離奇詭異,居然都是意外死亡刹孔,警方通過查閱死者的電腦和手機(jī)啡省,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來髓霞,“玉大人卦睹,你說我怎么就攤上這事》娇猓” “怎么了结序?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纵潦。 經(jīng)常有香客問我徐鹤,道長垃环,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任返敬,我火速辦了婚禮遂庄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劲赠。我一直安慰自己涛目,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布凛澎。 她就那樣靜靜地躺著霹肝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塑煎。 梳的紋絲不亂的頭發(fā)上沫换,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音最铁,去河邊找鬼苗沧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炭晒,可吹牛的內(nèi)容都是我干的待逞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼网严,長吁一口氣:“原來是場噩夢啊……” “哼识樱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起震束,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤怜庸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后垢村,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體割疾,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年嘉栓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宏榕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侵佃,死狀恐怖麻昼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馋辈,我是刑警寧澤抚芦,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響叉抡,放射性物質(zhì)發(fā)生泄漏尔崔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一褥民、第九天 我趴在偏房一處隱蔽的房頂上張望季春。 院中可真熱鬧,春花似錦轴捎、人聲如沸鹤盒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驼鞭,卻和暖如春秦驯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挣棕。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工译隘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洛心。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓固耘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親词身。 傳聞我的和親對象是個(gè)殘疾皇子厅目,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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

  • 對于瀏覽器訪問網(wǎng)站的過程中發(fā)生的請求與響應(yīng)的相關(guān)知識 一、 瀏覽器與服務(wù)器是如何溝通的 瀏覽器負(fù)責(zé)發(fā)起請求 服務(wù)器...
    抱著熊喵啃什么閱讀 306評論 0 0
  • Server(服務(wù)器)+Client(客戶端)+HTTP(超文本傳輸協(xié)議) HTTP的作用就是指導(dǎo)瀏覽器與服務(wù)器進(jìn)...
    還是流星拳比較好閱讀 397評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理法严,服務(wù)發(fā)現(xiàn)损敷,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 請求頭 accept:瀏覽器通過這個(gè)頭告訴服務(wù)器深啤,它所支持的數(shù)據(jù)類型Accept-Charset: 瀏覽器通過這個(gè)...
    wswenyue閱讀 370評論 0 1
  • 摘要:本文主要介紹HTTP的最基本的知識拗馒,包括request請求、response響應(yīng)溯街、常見的響應(yīng)狀態(tài)碼诱桂、GET請...
    EnochQin閱讀 3,538評論 3 2