HTTP首部

HTTP報文首部

??HTTP協(xié)議的請求和響應(yīng)報文中必定包含HTTP首部。首部內(nèi)容為客戶端和服務(wù)器分別處理請求和響應(yīng)提供所需要的信息损离。

HTTP請求報文

??在請求中僻澎,HTTP報文由方法十饥、URI逗堵、HTTP版本蜒秤、HTTP首部字段等部分構(gòu)成作媚。
image.png
HTTP響應(yīng)報文

??在相應(yīng)中漂问,HTTP報文由HTTP版本级解、狀態(tài)碼(數(shù)字和原因短語)勤哗、HTTP首部字段3部分構(gòu)成芒划。
image.png

??在報文眾多的字段中民逼,HTTP首部字段包含的信息最為豐富笑诅。首部字段同時存在于請求和響應(yīng)報文內(nèi)吆你,并涵蓋HTTP報文相關(guān)的內(nèi)容信息妇多。

HTTP首部字段

傳遞重要信息

??使用首部字段是為了給瀏覽器和服務(wù)器提供報文主體大小者祖、所使用的語言七问、認(rèn)證信息等內(nèi)容烂瘫。

HTTP首部字段結(jié)構(gòu)

??由首部字段名和字段值構(gòu)成的坟比,中間用冒號分隔。
??另外籍琳,字段值對應(yīng)單個HTTP首部字段可以有多個值趋急,如下所示:
??Keep-Alive:timeout=15呜达,max=100
??若HTTP報文首部中出現(xiàn)了兩個或兩個以上具有相同首部字段名時查近,根據(jù)瀏覽器內(nèi)部處理邏輯的不同霜威,結(jié)果可能不一致戈泼。

4種HTTP首部字段類型

根據(jù)實際用途分為:

  • 通用首部字段:請求報文和響應(yīng)報文兩方都會使用的首部
  • 請求首部字段:補充了請求的附加內(nèi)容谈宛、客戶端信息、響應(yīng)內(nèi)容相關(guān)優(yōu)先級等信息
  • 響應(yīng)首部字段:補充了響應(yīng)的附加內(nèi)容琼牧,也會要求客戶端附加額外的內(nèi)容信息
  • 實體首部字段:針對請求報文和響應(yīng)報文的實體部分使用的首部巨坊。補充了資源內(nèi)容更新時間等與實體有關(guān)的信息
HTTP/1.1首部字段
  • 通用首部字段
    image.png
  • 請求首部字段
    image.png
  • 響應(yīng)首部字段
    image.png
  • 實體首部字段
    image.png
非HTTP/1.1首部字段

Cookie共啃、Set-Cookie和Content-Disposition等在其他RFC中定義的首部字段究珊,使用頻率也很高剿涮。

End-to-end首部和Hop-by-hop首部

??HTTP首部字段將定義成緩存代理和非緩存代理的行為取试,分成2種類型瞬浓。

  • 端對端首部:分在此類別中的首部會轉(zhuǎn)發(fā)給請求/響應(yīng)對應(yīng)的最終接收目標(biāo)瑟蜈,且必須保存在有緩存生成的響應(yīng)中铺根,另外規(guī)定它必須被轉(zhuǎn)發(fā)访雪。
  • 逐跳首部:分在此類別中的首部只對單次轉(zhuǎn)發(fā)有效臣缀,會因通過緩存或代理而不再轉(zhuǎn)發(fā)精置。HTTP/1.1和之后版本脂倦,如果要使用hop-by-hop首部赖阻,需提供Conection首部字段火欧。

下面列舉出HTTP/1.1中的逐跳首部字段苇侵。除了這8個首部字段之外衅檀,其他所有字段都屬于端到端首部。

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade

HTTP/1.1通用首部字段

Cache-Control

能操作緩存的工作機制杉适。(指令的參數(shù)是可選的猿推,多個指令之間通過‘蹬叭,’分隔)首部字段Cache-Control的指令可用于請求及響應(yīng)時孽查。

Cache-Control指令一覽:可用的指令按請求和響應(yīng)分類如下所示盲再。
image.png
image.png
  1. 表示是否能緩存的指令
  • public:明確表示其他用戶也可利用緩存
  • private:當(dāng)指定private指令后,響應(yīng)只以特定的用戶作為對象梦碗。緩存服務(wù)器會對該特定用戶提供資源緩存的服務(wù)。
  • no-cache:防止從緩存中返回過期的資源
    客戶端發(fā)送的請求中包含no-cache指令,表示客戶端將不會接收緩存過的響應(yīng)巨柒。“中間”的緩存服務(wù)器必須把客戶端請求轉(zhuǎn)發(fā)給源服務(wù)器牺勾。
    服務(wù)器返回的響應(yīng)中包含no-cache驻民,那么緩存服務(wù)器不能對資源進(jìn)行緩存回还,源服務(wù)器以后也將不再對緩存服務(wù)器請求中提出的資源有效性進(jìn)行確認(rèn),且禁止其對響應(yīng)資源進(jìn)行緩存操作蝗柔。
Cache-Control: no-cache=Location

有服務(wù)器返回的響應(yīng)中癣丧,若對no-cache字段名具體指定參數(shù)值竟痰,那么客戶端在接收到這個被指定參數(shù)值的首部字段對應(yīng)的響應(yīng)報文后坏快,就不能使用緩存莽鸿。換言之,無參數(shù)值的首部字段可以使用緩存级及。只能在相應(yīng)指令中指定該參數(shù)饮焦。

  1. 控制可執(zhí)行緩存的對象的指令
  • no-store:暗示請求(和對應(yīng)的響應(yīng))或響應(yīng)中包含機密信息。因此硼啤,該指令規(guī)定緩存不能在本地存儲請求或響應(yīng)的任意部分。
  1. 指定緩存期限和認(rèn)證的指令
  • s-maxage:其功能和max-age指令的相同(單位是s)亏镰,不同點是s-maxage指令只適用于供多位用戶使用的公共緩存服務(wù)器索抓。也就是說耸黑,對于向同一用戶重復(fù)返回響應(yīng)的服務(wù)器來說大刊,這個指令沒有任何作用。
    另外伴郁,當(dāng)使用s-maxage指令后焊傅,則直接忽略對Expores首部字段及max-age指令的處理。
  • max-age:當(dāng)客戶端發(fā)送的請求中包含max-age指令時握巢,如果判定緩存資源的緩存時間數(shù)值比指定時間的數(shù)值更小,那么客戶端就接收緩存的資源。另外带射,當(dāng)指定max-age值為0,那么緩存服務(wù)器通常需要將請求轉(zhuǎn)發(fā)給源服務(wù)器灿里。
    當(dāng)服務(wù)器返回的響應(yīng)中包含max-age指令時,緩存服務(wù)器將不對資源的有效性再作確認(rèn)色鸳,而max-age數(shù)值代表資源保存為緩存的最長時間命雀。
    應(yīng)用HTTP/1.1版本的緩存服務(wù)器遇到同時存在Expries首部字段的情況時撵儿,會優(yōu)先處理max-age指令,而忽略掉Expries房匆。但是HTTP/1.0版本的緩存服務(wù)器的情況卻相反浴鸿。
  • min-fresh:要求緩存服務(wù)器返回至少還未過指定時間(單位s)的緩存資源。比如掸哑,當(dāng)指定min-fresh為60秒后,過了60秒的資源都無法作為響應(yīng)返回了摔癣。
  • max-stale:可指示緩存資源择浊,即使過期也照常接收。如果指令為指定參數(shù)值逾条,那么無論經(jīng)過多久琢岩,客戶端都會接收響應(yīng)。如果指定了具體數(shù)值师脂,那么即使過期担孔,只要仍處于max-stale指定的事件內(nèi),依舊會被客戶端接收攒磨。
  • only-if-cached:表示客戶端僅在緩存服務(wù)器本地緩存目標(biāo)資源的情況下才會要求其返回泳桦。換句話說,該指令要求緩存服務(wù)器不重新加載響應(yīng)娩缰,也不會再次確認(rèn)資源有效性灸撰。若發(fā)生請求緩存服務(wù)器的本地緩存無響應(yīng),則返回狀態(tài)碼504 Gateway Timeout
  • must-revalidate:使用該指令拼坎,代理會向源服務(wù)器再次驗證即將返回的響應(yīng)緩存目前是否仍然有效浮毯。若無法連通源服務(wù)器再次獲取有效資源的話,緩存必須給客戶端一條504狀態(tài)碼泰鸡。
    另外债蓝,使用must-revalidate會忽略請求的max-stale指令。
  • proxy-revalidate:要求所有的緩存服務(wù)器在接收到客戶端帶有該指令的請求返回響應(yīng)之前盛龄,必須再次驗證緩存的有效性饰迹。
  • no-transform:無論在請求還是響應(yīng)中,緩存都不能改變實體主體的媒體類型余舶,這樣可以防止緩存或代理圖片等類似操作啊鸭。
  • Cache-Control拓展:
cache-extension token
Cache-Control:private,community="UCI"

通過cache-extension標(biāo)記匿值,可以拓展Cache-Contril首部字段內(nèi)的指令赠制。但是,extension tokens僅對能理解它的緩存服務(wù)器來說是有意義的挟憔。

Connection
  • 控制不再轉(zhuǎn)發(fā)給代理的首部字段
    在客戶端發(fā)送請求和服務(wù)器返回響應(yīng)內(nèi)钟些,使用Connection首部字段,可控制不再轉(zhuǎn)發(fā)給代理的首部字段(即Hop-by-hop首部)绊谭。
  • 管理持久連接
    HTTP/1.1版本的默認(rèn)連接都是持久連接政恍。當(dāng)服務(wù)器想明確斷開連接時,則指定Connection首部字段的值為Close达传。
    HTTP/1.1之前的HTTP版本的默認(rèn)連接都是非持久連接篙耗,則需要指定Connection首部字段的值為Keep-Alive。
Date

表示創(chuàng)建HTTP報文的日期和時間

HTTP/1.1協(xié)議使用在RFC1123中規(guī)定的日期時間的格式:
image.png
Pragma

Pragma是HTTP/1.1之前版本的歷史遺留字段趟大,僅作為與HTTP/1.0的向后兼容而定義。
形式唯一:Pragma:no-cache
該首部字段屬于通用首部字段铣焊,但只用在客戶端發(fā)送的請求中逊朽。客戶端會要求所有的中間服務(wù)器不返回緩存的資源曲伊。

Trailer

會事先說明在報文主體后記錄了哪些首部字段叽讳。該首部字段可應(yīng)用在HTTP/1.1版本分塊傳輸編碼時追他。
image.png
Transfer-Encoding

規(guī)定傳輸報文主體時采用的編碼方式

HTTP/1.1的傳輸編碼方式僅對分塊傳輸編碼有效
image.png
Upgrade

用于檢測HTTP協(xié)議及其他協(xié)議是否可使用更高的版本進(jìn)行通信,其參數(shù)值可以用來指定一個完全不同的通信協(xié)議岛蚤。
image.png

使用首部字段Upgrade時邑狸,還需要額外指定Connection:Upgrade。

Via

為了追蹤客戶端與服務(wù)器之間的請求和響應(yīng)報文的傳輸路徑涤妒。
報文經(jīng)過代理或網(wǎng)關(guān)時单雾,會先在首部字段Via中附加該服務(wù)器的信息仇穗,然后再進(jìn)行轉(zhuǎn)發(fā)筝野。首部字段Via不僅用于追蹤報文的轉(zhuǎn)發(fā),還可避免請求回環(huán)的發(fā)生昭灵。所以必須在經(jīng)過代理時附加該首部字段內(nèi)容贿讹。
Via首部是為了追蹤傳輸路徑渐逃,所以經(jīng)常會和TRACE方法一起使用。

Warning

HTTP/1.1的Warning首部是從HTTP/1.0的響應(yīng)首部(Retry-After)演變過來的民褂。該首部通常會告知用戶一些與緩存相關(guān)的問題的警告茄菊。
image.png

請求首部字段

Accept
image.png

該字段可通知服務(wù)器,用戶代理能夠處理的媒體類型及媒體類型的相對優(yōu)先級赊堪∶嬷常可使用type/subtype這種形式,一次指定多種媒體類型雹食。
image.png

若想給顯示的媒體類型增加優(yōu)先級畜普,則使用q=來額外表示權(quán)重值,用分號(群叶;)進(jìn)行分隔吃挑。權(quán)重值q的范圍是0~1(可精確到小數(shù)點后三位),默認(rèn)權(quán)重為1=1.0.
當(dāng)服務(wù)器提供多種內(nèi)容時街立,將會首先返回權(quán)重值最高的媒體類型舶衬。

Accept-Charset

用來通知服務(wù)器用戶代理支持的字符集及字符集的相對優(yōu)先級。同樣可以指定多種字符集赎离,也可使用權(quán)重q值表示相對優(yōu)先級逛犹。

Accept-Encoding

用來告知服務(wù)器用戶代理支持的內(nèi)容編碼及內(nèi)容編碼的優(yōu)先級順序,可一次性指定多種內(nèi)容編碼梁剔。同樣可以用權(quán)重q值表示相對優(yōu)先級虽画,也可以使用*作為通配符。

Accept-Language

告知服務(wù)器用戶代理能夠處理的自然語言集及其優(yōu)先級码撰,可一次指定多種語言集柴梆,權(quán)重q值表示相對優(yōu)先級揣苏。

Authorization
image.png

告知服務(wù)器,用戶代理的認(rèn)證信息(證書值)涡扼。通常票彪,想要通過服務(wù)器認(rèn)證的用戶代理會在接收到返回的401狀態(tài)碼響應(yīng)后推掸,把首部字段Authorization加入請求中毡泻。共用緩存在接收到含有Authorization首部字段的請求時的操作處理會略有差異邪铲。

Expect

客戶端使用首部字段Expect告知服務(wù)器揽惹,期望出現(xiàn)的某種特定行為疯溺。因服務(wù)器無法理解客戶端的期望作出回應(yīng)而發(fā)生錯誤時墨闲,會返回狀態(tài)碼417Expectation Failed杆兵。
客戶端可以利用該首部字段,寫明所期望的拓展格侯。雖然HTTP/1.1規(guī)范只定義了100-continue(狀態(tài)碼100 Continue)鼻听。
等待狀態(tài)碼100響應(yīng)的客戶端在發(fā)生請求時财著,需要指定Expect:100-continue。

From

告知服務(wù)器使用用戶代理的用戶的電子郵件地址撑碴。通常撑教,其使用目的就是為了顯示搜索引擎等用戶代理的負(fù)責(zé)人的電子郵件聯(lián)系方式。使用代理時醉拓,應(yīng)盡可能包含在From首部字段伟姐。(但可能會因為代理不同,將電子郵件地址記錄在User-agent首部字段內(nèi))亿卤。

Host

虛擬主機運行在同一個IP上愤兵,因此使用首部字段Host加以區(qū)分。
首部字段Host會告知服務(wù)器排吴,請求的資源所處的互聯(lián)網(wǎng)主機名和端口號秆乳。Host首部字段在HTTP/1.1規(guī)范內(nèi)是唯一一個必須被包含在請求內(nèi)的首部字段。
請求被發(fā)送至服務(wù)器時钻哩,請求中的主機名會用IP地址直接替換解決矫夷。若服務(wù)器未設(shè)定主機名,那直接發(fā)送一個空值即可憋槐。

If-Match

形如If-xxx這種樣式的請求首部字段双藕,都可稱為條件請求。服務(wù)器接收到附帶條件的請求后阳仔,只有判斷指定條件為真時忧陪,才會執(zhí)行請求。
image.png

首部字段If-Match近范,屬附帶條件之一嘶摊,它會告知服務(wù)器匹配資源所用的實體標(biāo)記(Etag)值。這時的服務(wù)器無法使用若Etag值评矩。還可以使用*指定其字段值叶堆。針對這種情況,服務(wù)器將會忽略Etag的值斥杜,只要資源存在就處理請求虱颗。

If-Modified-Since
image.png

它會告知服務(wù)器,若If-Midified-Since字段值早于資源的更新時間蔗喂,則希望能處理該請求忘渔。而在指定If-modified-Since字段值的日期時間之后,如果請求的資源都沒有更新缰儿,則返回狀態(tài)碼304Not Modified的響應(yīng)畦粮。
If-Modified-Since 用于確認(rèn)代理或客戶端擁有的本地資源的有效性。獲取資源的更新日期時間, 可通過確認(rèn)首部字段 Last-Modified 來確定宣赔。

If-None-Match
image.png

在GET或HEAD方法中使用首部字段If-None-Match可獲取最新的資源预麸。

If-Range
image.png
image.png

下面那種方式需要發(fā)送兩次請求。

If-Unmodified-Since

與首部字段If-Modified-Since作用相反儒将。它的作用的是告知服務(wù)器师崎, 指定的請求資源只有在字段值內(nèi)指定的日期時間之后, 未發(fā)生更新的情況下椅棺, 才能處理請求。 如果在指定日期時間后發(fā)生了更新齐蔽, 則以狀態(tài)碼 412 Precondition Failed 作為響應(yīng)返回两疚。

Max-Forwards

通過TRACE方法或OPTIONS方法,發(fā)送包含首部字段Max-Forwards收到的請求時含滴,該字段以十進(jìn)制整數(shù)形式指定可經(jīng)過的服務(wù)器最大數(shù)目诱渤。
使用 HTTP 協(xié)議通信時, 請求可能會經(jīng)過代理等多臺服務(wù)器谈况。 途中勺美,如果代理服務(wù)器由于某些原因?qū)е抡埱筠D(zhuǎn)發(fā)失敗, 客戶端也就等不到服務(wù)器返回的響應(yīng)了碑韵。 對此赡茸, 我們無從可知∽N牛可以靈活使用首部字段 Max-Forwards占卧, 針對以上問題產(chǎn)生的原因展開調(diào)查。 由于當(dāng) Max-Forwards 字段值為 0 時联喘, 服務(wù)器就會立即返回響應(yīng)华蜒, 由此我們至少可以對以那臺服務(wù)器為終點的傳輸路徑的通信狀況有所把握。

Proxy-Authorization

接受到從代理服務(wù)器發(fā)來的認(rèn)證質(zhì)詢時豁遭,客戶端會發(fā)送包含該首部字段的請求叭喜,已告知服務(wù)器認(rèn)證所需要的信息。
這個行為是與客戶端和服務(wù)器之間的 HTTP 訪問認(rèn)證相類似的蓖谢, 不同之處在于捂蕴, 認(rèn)證行為發(fā)生在客戶端與代理之間。 客戶端與服務(wù)器之間的認(rèn)證闪幽, 使用首部字段 Authorization 可起到相同作用启绰。

Range

對于只需要獲取部分資源的范圍請求,包含首部字段Range即可告知服務(wù)器資源的指定范圍沟使。

Referer
image.png

客戶端一般都會發(fā)送Referer首部字段給服務(wù)器委可。但當(dāng)直接在瀏覽器地址輸入URI(可能含有ID和密碼等保密信息),出于安全性的考慮,也可以不發(fā)送該首部字段着倾。

TE

告知服務(wù)器客戶端能夠處理相應(yīng)的傳輸編碼方式及相對優(yōu)先級拾酝。它和首部字段Accept-Encoding的功能很像,但是用于傳輸編碼卡者。
首部字段TE出指定傳輸編碼之外蒿囤,還可以指定伴隨trailer字段的分塊傳輸編碼的方式。應(yīng)用后者時崇决,只需把trailers賦值給該字段值材诽。

User-Agent

將創(chuàng)建請求的瀏覽器和用戶代理名稱等信息傳達(dá)給服務(wù)器。
由網(wǎng)絡(luò)爬蟲發(fā)起請求時恒傻, 有可能會在字段內(nèi)添加爬蟲作者的電子郵件地址脸侥。 此外, 如果請求經(jīng)過代理盈厘, 那么中間也很可能被添加上代理服務(wù)器的名稱睁枕。

響應(yīng)首部字段

Accept-Ranges

告知客戶端服務(wù)器是否能處理范圍請求,以指定獲取服務(wù)器daunt某個資源沸手。字段值有兩種外遇,可處理范圍請求時為bytes,反之為none契吉。

Age

告知客戶端跳仿,源服務(wù)器在多久前創(chuàng)建了響應(yīng)。字段值單位為秒捐晶。若創(chuàng)建該響應(yīng)的服務(wù)器是緩存服務(wù)器塔嬉,Age值是指緩存后的響應(yīng)再次發(fā)起認(rèn)證到認(rèn)證完成的時間值。創(chuàng)建代理響應(yīng)時必須加上該字段租悄。

Etag

告知客戶端實體標(biāo)識谨究。它是一種可將資源以字符串形式做唯一性標(biāo)識的方式。服務(wù)器會為每份資源分配對應(yīng)的Etag值泣棋。
當(dāng)資源更新胶哲,Etag值也需要更新,其算法規(guī)則潭辈,僅僅是由服務(wù)器來分配鸯屿。
資源被緩存時,就會被分配唯一性標(biāo)識把敢,中文版和英文版瀏覽器返回的資源不一樣寄摆,所以僅憑URI指定緩存的資源是相當(dāng)困難的。

  • 強Etag值:不論實體發(fā)生多么細(xì)微的變化都會改變其值修赞。
  • 弱Etag值:只用于提示資源是否相同婶恼。只有資源發(fā)生了根本改變桑阶,產(chǎn)生差異時才會改變Etag值。這時會在字段值最開始處附加W/勾邦。
Location
image.png

將響應(yīng)接收方引導(dǎo)至某個與請求URI位置不同的資源蚣录。基本上該字段會配合3xx:Redirection的響應(yīng)眷篇,提供重定向的URI萎河。
幾乎所有的瀏覽器在接收到包含首部字段Location的響應(yīng)后,都會強制性的嘗試對已提示的重定向資源的訪問蕉饼。

Proxy-Authenticate

把由代理服務(wù)器所要求的認(rèn)證信息發(fā)送給客戶端虐杯。

Retry-After

告知客戶端應(yīng)該在多久之后再次發(fā)送請求。主要配合狀態(tài)碼503 Service Unavailable響應(yīng)昧港,或3xx Redireact響應(yīng)一起使用擎椰。
字段值可以指定為具體的日期時間(Wed, 04 Jul 2012 06: 34: 24GMT 等格式),也可以是創(chuàng)建響應(yīng)后的秒數(shù)慨飘。

Server

告知客戶端當(dāng)前服務(wù)器上安裝的HTTP服務(wù)器應(yīng)用程序的信息。

Vary
image.png

可對緩存進(jìn)行控制译荞。源服務(wù)器會向代理服務(wù)器傳達(dá)關(guān)于本地緩存使用方法的命令瓤的。
從代理服務(wù)器接收到源服務(wù)器返回包含Vary指定項的響應(yīng)之后,若要再進(jìn)行緩存吞歼,僅對請求中含有相同Vary指定首部字段的請求返回緩存圈膏。即使對相同資源發(fā)起請求,但由于Vary指定的首部字段不相同篙骡,因此必須要從源服務(wù)器重新獲取資源稽坤。

WWW-Authenticate

用于HTTP訪問認(rèn)證。告知客戶端適用于訪問請求URI所指定資源的認(rèn)證方案和帶參數(shù)提示的質(zhì)詢糯俗。狀態(tài)碼401 Unauthorized響應(yīng)中尿褪,肯定帶有該首部字段。

實體首部字段

包含在請求報文和響應(yīng)報文中的實體部分所使用的首部得湘,用于補充內(nèi)容的更新時間等與實體相關(guān)的信息杖玲。

Allow

通知客戶端能夠支持Request-URI指定資源的所有HTTP方法。當(dāng)服務(wù)器收到不支持的HTTP方法時淘正,會以狀態(tài)碼405Method Not Allowed作為響應(yīng)返回摆马。與此同時,還會把所有能支持的HTTP方法寫入首部字段Allow后返回鸿吆。

Content-Encoding

告知客戶端服務(wù)器對實體的主體部分選用的內(nèi)容編碼方式囤采。內(nèi)容編碼是指不丟失實體信息的前提下所進(jìn)行的壓縮。

Content-Language

告知客戶端惩淳,實體主體使用的自然語言蕉毯。

Content-Length

表明實體主體部分的大小(單位字節(jié))。對實體主體進(jìn)行內(nèi)容編碼傳輸時恕刘,不能再使用Content-Length首部字段缤谎。

Content-Location

給出與報文主體部分相對應(yīng)的URI。和首部字段Location不同褐着,其表示的是報文主體返回資源對應(yīng)的URI坷澡。

Content-MD5
image.png

是一串由MD5算法生成的值,其目的在于檢查報文主體在傳輸過程中是否保持完整含蓉,以及確認(rèn)傳輸?shù)竭_(dá)频敛。(HTTP首部無法記錄二進(jìn)制值,通過Base64編碼處理)

Content-Range
image.png

告知客戶端作為響應(yīng)返回的實體的哪個部分符合范圍請求馅扣。字段值以字節(jié)為單位斟赚,表示當(dāng)前發(fā)送部分及整個實體大小。

Content-Type

說明了實體主體內(nèi)對象的媒體類型差油。和首部字段Accept一樣拗军,字段值用type/subtype形式賦值。

Expires

將資源失效的日期告知客戶端蓄喇。緩存服務(wù)器在接收到含有首部字段Expires的響應(yīng)后发侵,會以緩存來應(yīng)答請求,在Expires字段值指定的時間之前妆偏,響應(yīng)的副本會一直保存刃鳄。當(dāng)超過指定的時間后,會轉(zhuǎn)向源服務(wù)器請求資源钱骂。
源服務(wù)器不希望緩存服務(wù)器對資源緩存時叔锐,最好在該字段內(nèi)寫入與首部字段Date相同的時間值。
但是见秽,當(dāng)首部字段Cache-Control有指定max-age指令時愉烙,比起該字段,會優(yōu)先處理max-age指令解取。

Last-Modified

指明資源最終修改的時間齿梁。一般來說,這個值就是Request-URI指定資源被修改的時間肮蛹。但類似使用CGI腳本進(jìn)行動態(tài)數(shù)據(jù)處理時勺择,該值有可能會變成數(shù)據(jù)最終修改時的時間。

為Cookie服務(wù)的首部字段

??Cookie的工作機制是用戶識別及狀態(tài)管理伦忠。Web網(wǎng)站為了管理用戶的狀態(tài)會通過Web瀏覽器省核,把一些數(shù)據(jù) 臨時寫入用戶的計算機內(nèi)。接著當(dāng)用戶訪問該Web網(wǎng)站時昆码,可通過通信方式取回之前發(fā)放的Cookie气忠。

??調(diào)用Cookie時邻储,由于可校驗Cookie的有效期,以及發(fā)送方的域旧噪、路徑吨娜、協(xié)議等信息,所以正規(guī)發(fā)布的Cookie內(nèi)的數(shù)據(jù)不會因來自其他Web站點和攻擊者的攻擊而泄露淘钟。
image.png
Set-Cookie

當(dāng)服務(wù)器準(zhǔn)備開始管理客戶端的狀態(tài)時宦赠,會事先告知各種信息。
image.png
  • expires:指定瀏覽器可發(fā)送Cookie的有效期米母。當(dāng)省略時勾扭,其有效期僅限于維持瀏覽器會話時間段內(nèi)。這通常限于瀏覽器應(yīng)用程序被關(guān)閉之前铁瞒。
    ??另外妙色,一旦Cookie從服務(wù)器發(fā)送至客戶端,服務(wù)器就不存在可以顯示刪除Cookie的方法慧耍。但可通過覆蓋已過期的Cookie身辨,實現(xiàn)對客戶端Cookie的實質(zhì)性刪除操作。
  • path:用于限制指定Cookie的發(fā)送范圍的文件目錄芍碧。不過有辦法避開此限制煌珊。
  • domain:指定的域名可做到與結(jié)尾匹配一致。比
    如师枣, 當(dāng)指定 example.com 后怪瓶, 除 example.com 以外萧落, www.example.comwww2.example.com 等都可以發(fā)送 Cookie践美。
  • secure:用于限制Web頁面盡在HTTPS安全連接時,才可以發(fā)送Cookie找岖。
    發(fā)送Cookie時陨倡,指定secure屬性的方法如下:
Set-Cookie:name=value;secure

??當(dāng)省略secure屬性時许布,不論HTTP還是HTTPS兴革,都會對Cookie進(jìn)行回收。

  • HttpOnly:是Cookie的拓展功能蜜唾,它使JS腳本無法獲得Cookie杂曲。其主要目的為防止跨站腳本攻擊對Cookie的信息竊取。
    發(fā)送指定 HttpOnly 屬性的 Cookie 的方法如下所示:
Set-Cookie: name=value; HttpOnly
Cookie
Cookie:status=enable

告知服務(wù)器袁余,當(dāng)客戶端想獲得HTTP狀態(tài)管理支持時擎勘,就會在請求中包含從服務(wù)器接收到的Cookie。接收到多個Cookie時颖榜,同樣可以以多個Cookie形式發(fā)送棚饵。

其他首部字段

HTTP首部字段是可以自行拓展的煤裙。所以在Web服務(wù)器和瀏覽器的應(yīng)用上,會出現(xiàn)各種非標(biāo)準(zhǔn)的首部字段噪漾。

X-Frame-Options

屬于HTTP響應(yīng)首部硼砰,用于控制網(wǎng)站內(nèi)容在其他Web網(wǎng)站的Frame標(biāo)簽內(nèi)的顯示問題。其主要目的是為了防止點擊劫持攻擊欣硼。
可指定的字段值:

  • DENY:拒絕
  • SAMEORIGIN:僅同源域名下的頁面匹配時許可
    現(xiàn)在主流的瀏覽器都已經(jīng)支持题翰。
    ####### X-XSS-Protection
    屬于HTTP響應(yīng)首部,它是針對跨站腳本攻擊(XSS)的一種對策分别,用于控制瀏覽器XSS防護機制的開關(guān)遍愿。
    可指定的字段值:
  • 0:將XSS過濾設(shè)置成無效狀態(tài)
  • 1:將XSS過濾設(shè)置成有效狀態(tài)
DNT

屬于HTTP請求首部,是Do Not Track的簡稱耘斩,意為拒絕個人信息被收集沼填,是表示拒絕被精準(zhǔn)廣告追蹤的一種方法。
可指定的字段值:

  • 0:同意被追蹤
  • 1:拒絕被追蹤
    Web服務(wù)器需要對DNT做對應(yīng)的支持
p3p

屬于HTTP響應(yīng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末括授,一起剝皮案震驚了整個濱河市坞笙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荚虚,老刑警劉巖薛夜,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異版述,居然都是意外死亡梯澜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門渴析,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晚伙,“玉大人,你說我怎么就攤上這事俭茧∨亓疲” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵母债,是天一觀的道長午磁。 經(jīng)常有香客問我,道長毡们,這世上最難降的妖魔是什么迅皇? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮衙熔,結(jié)果婚禮上登颓,老公的妹妹穿的比我還像新娘。我一直安慰自己青责,他們只是感情好挺据,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布取具。 她就那樣靜靜地躺著,像睡著了一般扁耐。 火紅的嫁衣襯著肌膚如雪暇检。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天婉称,我揣著相機與錄音块仆,去河邊找鬼。 笑死王暗,一個胖子當(dāng)著我的面吹牛悔据,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俗壹,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼科汗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绷雏?” 一聲冷哼從身側(cè)響起头滔,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涎显,沒想到半個月后坤检,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡期吓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年早歇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讨勤。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡箭跳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悬襟,到底是詐尸還是另有隱情衅码,我是刑警寧澤拯刁,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布脊岳,位于F島的核電站,受9級特大地震影響垛玻,放射性物質(zhì)發(fā)生泄漏割捅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一帚桩、第九天 我趴在偏房一處隱蔽的房頂上張望亿驾。 院中可真熱鬧,春花似錦账嚎、人聲如沸莫瞬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疼邀。三九已至喂江,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旁振,已是汗流浹背获询。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拐袜,地道東北人吉嚣。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蹬铺,于是被迫代替她去往敵國和親尝哆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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