《圖解HTTP》學(xué)習(xí)記錄五(報文首部字段①)

報文分為請求報文與響應(yīng)報文,除開報文實體的差異之外,兩者的報文首部內(nèi)容上也不盡相同。下圖是訪問www.baidu.com的報文首部截圖:

可見俭厚,請求報文首部第一行是由“請求方法+協(xié)議及其版本”組成的請求行,響應(yīng)報文首部的第一行則是“狀態(tài)碼+協(xié)議及其版本組成的”狀態(tài)行驶臊。此外挪挤,包含各種首部字段的HTTP首部字段行也是有差別的叼丑,一般將HTTP首部字段語句分為:通用首部字段、請求首部字段扛门、響應(yīng)首部字段鸠信、實體首部字段。所有的字段格式都是“key:value”這種形式尖飞,如果value值有多個症副,中間用逗號隔開店雅。接下來政基,來具體介紹首部字段的各種屬性值:

通用首部字段

即,響應(yīng)報文和請求報文中均可以存在的首部字段闹啦,具體包括:
1.Cache-Control
用以操縱緩存的工作機制沮明,雖為通用首部字段,但其參數(shù)指令在請求報文首部與響應(yīng)報文首部略有不同:

  • pubulic/private:這是兩個只存在于響應(yīng)報文之中的功能相反的指令窍奋,pubulic代表可向任意方提供緩存荐健,而private只能向特定用戶提供緩存。
  • no-cache:防止從緩存中獲取過期資源琳袄。
    若請求中包含該指令:則表示客戶端不會接收緩存過的響應(yīng)江场,緩存服務(wù)器會將請求直接轉(zhuǎn)發(fā)給源服務(wù)器;
    若響應(yīng)中包含該指令:緩存服務(wù)器則不能對資源進行緩存窖逗,且源服務(wù)器將不再對緩存服務(wù)器中提出的請求進行有效性確認址否,禁止其進行緩存操作。
  • no-store:暗示請求或響應(yīng)中包含機密內(nèi)容碎紊,禁止緩存佑附。實際上該指令比no-cache更加強硬,是真正的禁止緩存仗考。
  • no-transform:規(guī)定緩存不能改變實體主體的媒體類型音同。
  • max-age:形如Cache-Control:max-age:60000,其中的數(shù)字單位為秒秃嗜。
    若請求中包含該指令:表示緩存的時間若比該時間小权均,則加載緩存。故當(dāng)max-age的值為0時锅锨,緩存服務(wù)器會直接將請求轉(zhuǎn)發(fā)給源服務(wù)器螺句。
    若響應(yīng)中包含該指令:緩存服務(wù)器將不再對資源的有效性進行確認,以max-age的數(shù)值來代表資源保存的最長緩存時間橡类,其優(yōu)先級是高于Expires的蛇尚;
  • min-fresh:形如Cache-Control:min-fresh:60000,其中的數(shù)字單位為秒顾画。表示過了XX秒后的資源都無法作為緩存返回取劫。
  • max-stale:形如Cache -Control:max-stale:60000匆笤,其中的數(shù)字單位為秒。表示只要處于max-stale的時間范圍內(nèi)谱邪,無論緩存是否過期都會照常接收炮捧。若無值,則表示無限期接收緩存惦银。
    PS:min-freshmax-stale構(gòu)成了非常規(guī)處理緩存的上下限咆课。
  • must-revalidate:代理會向源服務(wù)器再次驗證即將返回的響應(yīng)緩存是否有效,這是最高優(yōu)先級的指令扯俱,會自動忽略max-stale书蚪。

2.Conection
兩個作用,其一是控制不再轉(zhuǎn)發(fā)的首部字段名迅栅;其二是管理持久連接殊校。

  • 控制不再轉(zhuǎn)發(fā)的首部字段名

    轉(zhuǎn)自《圖解HTTP》

    如圖所示,Connection:upgrade控制了名為Upgrade的首部字段读存,只讓代理服務(wù)其接收該字段为流,代理轉(zhuǎn)發(fā)過程中刪除了有關(guān)Upgrade的語句。

  • 管理持久連接
    共有兩個參數(shù):close/keep-alive让簿,前者表示斷開連接敬察,后者表示保持持久連接。

3.Data
表示該HTTP報文所創(chuàng)立的日期與時間尔当。

4.Trailer
事先說明在報文主體后記錄了哪些首部字段莲祸。

5.Transfer-Encodding
規(guī)定了傳輸報文主體時采用何種編碼形式。

6.Upgrade
用以檢測HTTP協(xié)議及其它協(xié)議是否可使用更高版本進行通信居凶,其參數(shù)可以指定一個完全不同的通信協(xié)議虫给,如:Upgrade: TSL/1.0,HTTP/1.1侠碧。

7.Via
用于記錄經(jīng)過代理服務(wù)器的轉(zhuǎn)發(fā)情況抹估,常與Trace方法一塊使用。

8.Warning
警告弄兜!

請求報文首部字段

請求報文首部字段意為只有請求報文特有的药蜻,只會出現(xiàn)在請求報文中的首部字段。用于補充請求的附加信息替饿,客戶端信息 以及對響應(yīng)內(nèi)容的優(yōu)先級等等语泽。
1.Accept
Accept字段可以告知服務(wù)器,用戶代理能夠處理的媒體類型及其優(yōu)先級视卢,可用type/subtype的這種形式來一次指定多個媒體類型踱卵,如:

  • 文本文件
    text/html,text/js,text/css
    application/xhtml+xml,application/xml
  • 圖片文件
    image/gif,image/jpeg,image/png
  • 視頻文件
    video/mpegvideo/quicktime
  • 二進制文件
    application/octec-stream,application/zip

若想要給顯示的媒體類型添加優(yōu)先級,則使用 q=(0~1)來表示權(quán)重值惋砂,當(dāng)服務(wù)器提供多種內(nèi)容時妒挎,將會首先返回權(quán)重值最高的媒體類型。

2.Accept-Charset/Accept-Encoding/Accept-Language
這三個分別表示通知服務(wù)器用戶代理所能支持的字符集/編碼類型/以及支持的語言西饵。同樣的他們也能用q=(0~1)來表示優(yōu)先級酝掩。

3.Authorization
告知服務(wù)器,用戶代理的認證登錄信息眷柔,是服務(wù)器返回401狀態(tài)碼用戶登錄后期虾,給請求添加的登錄信息,現(xiàn)在基本上不會使用這種方法驯嘱。

4.From
來告知服務(wù)器用戶的郵箱镶苞,僅僅是留下一個聯(lián)系方式。

5.Host
它將告知服務(wù)器宙拉,請求的資源所處的互聯(lián)網(wǎng)主機名和端口號宾尚,Host首部字段是HTTP/1.1規(guī)范中唯一一個必須包含在請求首部內(nèi)的首部字段丙笋。由于一個IP地址下可能存在多個域名谢澈,所以需要Host來告訴服務(wù)器具體請求的是哪個資源。

6.Range
范圍請求御板,告知服務(wù)器索取資源的范圍锥忿。如:Range: bytes = 5000-10000意為請求獲取從第5000個字節(jié)到10000個字節(jié)的資源。若獲取成功怠肋,會拋出206,返回范圍資源;失敗施逾,則拋出200邦鲫,返回所有資源。

7.If-Match/If-Modified-Since/If-None-Match/If-Range/If-Unmodified-Since
形如If-xxx的這種請求首部字段稱為條件請求杈抢,意為服務(wù)器只有滿足條件請求的內(nèi)容数尿,才會執(zhí)行請求。

  • If-Match:只有它的值與想要獲取資源的實體標(biāo)記(Etag)值相等時惶楼,服務(wù)器才會返回資源右蹦。
  • If-Modified-Since:如果在該字段指定的時間早于資源更新時間,則處理該請求歼捐。反之何陆,則拋出304,使用緩存即可豹储。
  • If-Range:范圍請求贷盲,與Range字段一同使用。如果其值與實體標(biāo)記(Etag)值相等剥扣,則返回指定的范圍資源巩剖。若不等慨灭,則拋出200,返回所有資源球及。
  • If-None-Match/If-Unmodified-SinceIf-Match/If-Modified-Since否定方法氧骤。

8.Max-Forwards:通過TRACE方法或OPTIONS方法時,發(fā)送包含字段請求時吃引,將以十進制形式指定經(jīng)過服務(wù)器的最大數(shù)目筹陵。例如:Max-Forwards:3,規(guī)定經(jīng)過服務(wù)器數(shù)目為3镊尺,沒經(jīng)過一個服務(wù)器其值將會-1朦佩,當(dāng)其值為0時,所在服務(wù)器強制返回響應(yīng)庐氮。

9.Refer
告知服務(wù)器請求原始資源的URL语稠,出于安全性考慮也可以考慮不發(fā)送該字段。

10.TE
告知服務(wù)器客戶端能夠處理的傳輸編碼方式及其優(yōu)先級弄砍,他與Accept-Encoding很像仙畦,但僅用于傳輸編碼。

11.User-Agent:該字段會將創(chuàng)建請求的瀏覽器及用戶代理等信息傳達個服務(wù)器音婶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慨畸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衣式,更是在濱河造成了極大的恐慌寸士,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碴卧,死亡現(xiàn)場離奇詭異弱卡,居然都是意外死亡,警方通過查閱死者的電腦和手機住册,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門婶博,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人界弧,你說我怎么就攤上這事凡蜻。” “怎么了垢箕?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵划栓,是天一觀的道長。 經(jīng)常有香客問我条获,道長忠荞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮委煤,結(jié)果婚禮上堂油,老公的妹妹穿的比我還像新娘。我一直安慰自己碧绞,他們只是感情好府框,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讥邻,像睡著了一般迫靖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兴使,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天系宜,我揣著相機與錄音,去河邊找鬼发魄。 笑死盹牧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的励幼。 我是一名探鬼主播汰寓,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赏淌!你這毒婦竟也來了踩寇?” 一聲冷哼從身側(cè)響起啄清,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤六水,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辣卒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掷贾,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年荣茫,在試婚紗的時候發(fā)現(xiàn)自己被綠了想帅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡啡莉,死狀恐怖港准,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咧欣,我是刑警寧澤浅缸,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站魄咕,受9級特大地震影響衩椒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一毛萌、第九天 我趴在偏房一處隱蔽的房頂上張望苟弛。 院中可真熱鬧,春花似錦阁将、人聲如沸膏秫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荔睹。三九已至,卻和暖如春言蛇,著一層夾襖步出監(jiān)牢的瞬間僻他,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工腊尚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吨拗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓婿斥,卻偏偏與公主長得像劝篷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子民宿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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