HTTP 協(xié)議,請(qǐng)求及響應(yīng)

HTTP 協(xié)議

HTTP 是一種在客戶端和服務(wù)器之間編碼和傳輸數(shù)據(jù)的方法。
它是一個(gè)請(qǐng)求/響應(yīng)協(xié)議:客戶端和服務(wù)端針對(duì)相關(guān)內(nèi)容和完成狀態(tài)信息的請(qǐng)求和響應(yīng)肆汹。
HTTP 是獨(dú)立的攒至,允許請(qǐng)求和響應(yīng)流經(jīng)許多執(zhí)行負(fù)載均衡嗓袱,緩存,加密和壓縮的中間路由器和服務(wù)器梧却。

一個(gè)基本的 HTTP 請(qǐng)求由一個(gè)動(dòng)詞(方法)和一個(gè)資源(端點(diǎn))組成荆几。

HTTP 請(qǐng)求的動(dòng)詞

HTTP 是依賴于較低級(jí)協(xié)議(如 TCP 和 UDP)的應(yīng)用層協(xié)議抬纸。

HTTP請(qǐng)求

發(fā)送HTTP請(qǐng)求的過(guò)程就是構(gòu)建HTTP請(qǐng)求報(bào)文并通過(guò)TCP協(xié)議中發(fā)送到服務(wù)器指定端口(HTTP協(xié)議80/8080, HTTPS協(xié)議443)纷铣。

HTTP請(qǐng)求報(bào)文是由三部分組成:

  • 請(qǐng)求行
  • 請(qǐng)求報(bào)頭 Header
  • 請(qǐng)求正文

請(qǐng)求行

格式如下:
Method Request-URL HTTP-Version CRLF
例如 GET /index.html HTTP1.1

常用的方法有: GET, POST, PUT, DELETE, OPTIONS(返回請(qǐng)求的資源所支持的方法), HEAD(僅請(qǐng)求響應(yīng)首部)

請(qǐng)求行

請(qǐng)求頭信息 Request Header

請(qǐng)求報(bào)頭允許客戶端向服務(wù)器傳遞請(qǐng)求的附加信息和客戶端自身的信息战转。
客戶端不一定特指瀏覽器搜立,有時(shí)候也可使用Linux下的CURL命令以及HTTP客戶端測(cè)試工具等。
常見的請(qǐng)求報(bào)頭有:

  • Accept:指定客戶端用于接受哪些類型的信息
  • Accept-Charset
  • Accept-Encoding:指定客戶端接受的編碼方式
  • Accept-Language
  • Content-Type
  • Authorization:客戶端提供給服務(wù)器的認(rèn)證信息
  • Cookie:每次請(qǐng)求時(shí)都會(huì)攜帶上 Cookie 以方便服務(wù)器端識(shí)別是否是同一個(gè)客戶端
  • Connection:設(shè)置為 keep-alive 用于告訴客戶端本次HTTP請(qǐng)求結(jié)束之后并不需要關(guān)閉TCP連接槐秧,這樣可以使下次HTTP請(qǐng)求使用相同的TCP通道啄踊,節(jié)省TCP連接建立的時(shí)間
  • User-Agent:用戶代理,一般情況是瀏覽器刁标,也有其他類型
請(qǐng)求頭信息 Request Header

請(qǐng)求正文

當(dāng)使用POST, PUT等方法時(shí)颠通,通常需要客戶端向服務(wù)器傳遞數(shù)據(jù)。
這些數(shù)據(jù)就儲(chǔ)存在請(qǐng)求正文中膀懈。在請(qǐng)求包頭中有一些與請(qǐng)求正文相關(guān)的信息顿锰,例如: 現(xiàn)在的Web應(yīng)用通常采用 Restful 架構(gòu),請(qǐng)求的數(shù)據(jù)格式一般為json。這時(shí)就需要設(shè)置 Content-Type: application/json硼控。

HTTP響應(yīng)

HTTP響應(yīng)報(bào)文也是由三部分組成:

  • 狀態(tài)碼
  • 響應(yīng)報(bào)頭
  • 響應(yīng)報(bào)文

狀態(tài)碼

狀態(tài)碼是由3位數(shù)組成刘陶,第一個(gè)數(shù)字定義了響應(yīng)的類別,且有五種可能取值:

  • 1xx:指示信息–表示請(qǐng)求已接收牢撼,繼續(xù)處理
  • 2xx:成功–表示請(qǐng)求已被成功接收匙隔、理解、接受
  • 3xx:重定向–要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作
  • 4xx:客戶端錯(cuò)誤–請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無(wú)法實(shí)現(xiàn)
  • 5xx:服務(wù)器端錯(cuò)誤–服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求

例如 HTTP 1.1 200 OK(即版本號(hào) + 狀態(tài)碼)

服務(wù)端應(yīng)答

響應(yīng)報(bào)頭 Response Header

響應(yīng)頭信息 Response Header

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

服務(wù)器返回給瀏覽器的文本信息浪默,通常HTML, CSS, JS, 圖片等文件就放在這一部分牡直。

HTTP header中的 Cache-control

網(wǎng)頁(yè)的緩存是由HTTP消息頭中的 Cache-control 來(lái)控制的缀匕,常見的取值有private纳决、no-cache、max-age乡小、must-revalidate等阔加,默認(rèn)為private。其作用根據(jù)不同的重新瀏覽方式分為以下幾種情況:

  • 打開新窗口
    如果指定 Cache-control 的值為private满钟、no-cache胜榔、must-revalidate,那么打開新窗口訪問(wèn)時(shí)都會(huì)重新訪問(wèn)服務(wù)器湃番。而如果指定了max-age值夭织,那么在此值內(nèi)的時(shí)間里就不會(huì)重新訪問(wèn)服務(wù)器,例如:Cache-control: max-age=5 表示當(dāng)訪問(wèn)此網(wǎng)頁(yè)后的5秒內(nèi)再次訪問(wèn)不會(huì)去服務(wù)器吠撮。

  • 在地址欄回車
    如果指定 Cache-control 的值為private或must-revalidate尊惰,則只有第一次訪問(wèn)時(shí)會(huì)訪問(wèn)服務(wù)器,以后就不再訪問(wèn)泥兰。如果值為no-cache弄屡,那么每次都會(huì)訪問(wèn)。如果值為max-age鞋诗,則在過(guò)期之前不會(huì)重復(fù)訪問(wèn)膀捷。

  • 按后退按扭
    如果指定 Cache-control 的值為private、must-revalidate削彬、max-age全庸,則不會(huì)重訪問(wèn),而如果為no-cache融痛,則每次都重復(fù)訪問(wèn)

  • 按刷新按扭
    無(wú)論為何值糕篇,都會(huì)重復(fù)訪問(wèn)

當(dāng)指定Cache-control值為“no-cache”時(shí),訪問(wèn)此頁(yè)面不會(huì)在Internet臨時(shí)文件夾留下頁(yè)面?zhèn)浞荨?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酌心,一起剝皮案震驚了整個(gè)濱河市拌消,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖墩崩,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氓英,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鹦筹,警方通過(guò)查閱死者的電腦和手機(jī)铝阐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铐拐,“玉大人徘键,你說(shuō)我怎么就攤上這事”轶” “怎么了吹害?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)虚青。 經(jīng)常有香客問(wèn)我它呀,道長(zhǎng),這世上最難降的妖魔是什么棒厘? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任纵穿,我火速辦了婚禮,結(jié)果婚禮上奢人,老公的妹妹穿的比我還像新娘谓媒。我一直安慰自己,他們只是感情好何乎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布句惯。 她就那樣靜靜地躺著,像睡著了一般宪赶。 火紅的嫁衣襯著肌膚如雪宗弯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天搂妻,我揣著相機(jī)與錄音蒙保,去河邊找鬼。 笑死欲主,一個(gè)胖子當(dāng)著我的面吹牛邓厕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扁瓢,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼详恼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了引几?” 一聲冷哼從身側(cè)響起昧互,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后敞掘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叽掘,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年玖雁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了更扁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赫冬,死狀恐怖浓镜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情劲厌,我是刑警寧澤膛薛,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站脊僚,受9級(jí)特大地震影響相叁,放射性物質(zhì)發(fā)生泄漏遵绰。R本人自食惡果不足惜辽幌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椿访。 院中可真熱鬧乌企,春花似錦、人聲如沸成玫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哭当。三九已至猪腕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钦勘,已是汗流浹背陋葡。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彻采,地道東北人腐缤。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肛响,于是被迫代替她去往敵國(guó)和親岭粤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理特笋,服務(wù)發(fā)現(xiàn)剃浇,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 10,958評(píng)論 6 13
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,348評(píng)論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng)虎囚,內(nèi)容來(lái)源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,222評(píng)論 3 82
  • 工作流程 一次HTTP操作稱為一個(gè)事務(wù)臼寄,其工作過(guò)程可分為四步: 1)首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個(gè)超...
    保川閱讀 4,602評(píng)論 2 14