HTTP首部的構(gòu)成
一次HTTP請(qǐng)求或響應(yīng)的首部包括三個(gè)部分,報(bào)文首部,空行,以及報(bào)文主體。其中報(bào)文首部在請(qǐng)求和響應(yīng)中有所不同,參見(jiàn)下圖(圖片來(lái)自《圖解HTTP》一書(shū)):

請(qǐng)求首部

響應(yīng)首部
區(qū)別:請(qǐng)求行相比狀態(tài)行,要多一個(gè)URI標(biāo)識(shí),因?yàn)橐f(shuō)明請(qǐng)求的資源;另外還有各自的請(qǐng)求首部字段或響應(yīng)首部字段。
常用首部字段
請(qǐng)求首部字段
- Accept系: 定義請(qǐng)求結(jié)果的要求,如Accept,Accept-Encoding,Accept-Language,Accept-Charset等。
- Host: 目標(biāo)服務(wù)器的域和端口號(hào),如
Host:www.demo.com。 - Referer: 發(fā)起請(qǐng)求的頁(yè)面URI,即
Referer:${window.location.href} - User-Agent: 客戶(hù)端信息,如
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
響應(yīng)首部字段
- ETag: 某一個(gè)固定的URI資源發(fā)生變化時(shí),ETag會(huì)更新,如
ETag:W/"92d8a6509d07d749ee661d8af47d2fbd" - Server: HTTP服務(wù)器的應(yīng)用程序信息,如
Server:Apache/2.2.6 (Unix) PHP/5.2.5 - Location: 引導(dǎo)客戶(hù)端向某資源發(fā)起訪問(wèn),一般配合狀態(tài)碼3xx使用,重定向請(qǐng)求,如
Location:http://www.demo2.com/index.html。 - WWW-Authenticate: 告訴客戶(hù)端認(rèn)證方案,一般配合狀態(tài)碼
401 Unauthorized使用,如WWW-Authenticate:Basic realm="Usagidesign Auth"
通用首部字段
- Cache-Control: 對(duì)于緩存服務(wù)器下達(dá)緩存控制的相關(guān)指令,具體指令有
no-cache,no-store,max-age = ${秒},public,private等。 - Connection: 控制代理不再轉(zhuǎn)發(fā)的字段,管理持久連接。
如Connection:Upgrade,那么在經(jīng)過(guò)代理后,Upgrade首部字段將不會(huì)被發(fā)送至服務(wù)器。如Connection:Keep-Alive。 - Date: 表示HTTP報(bào)文創(chuàng)建時(shí)間,如
Date:Fri, 19 Oct 2018 09:45:13 GMT。 - Pragma: 兼容HTTP1.1以前的版本,控制緩存,如
Pragma:no-cache。 - Transfer-Encoding: 報(bào)文傳輸時(shí)的編碼方式,HTTP1.1僅對(duì)分塊傳輸?shù)木幋a形式有效,如
Transfer-Encoding:chunked。
實(shí)體首部字段
- Allow: 資源允許的請(qǐng)求方式,如
Allow:GET, HEAD。 - Expires: 資源過(guò)期時(shí)間,如
Expires:Fri, 20 Oct 2018 09:45:13 GMT。 - Last-Modified: 資源最后一次修改的時(shí)間,如
Last-Modified:Fri, 15 Oct 2018 09:45:13 GMT。
還有一些表示資源具體信息的,如Content-Encoding,Content-Type,Content-Language,Content-Range等。
Cookie相關(guān),未被編入HTTP1.1 RFC2616標(biāo)準(zhǔn)中。
Cookie: 屬于請(qǐng)求首部,攜帶符合條件的Cookie(domain,path,expires)發(fā)送至服務(wù)器。
Set-Cookie: 屬于響應(yīng)首部,告訴客戶(hù)端需要保存哪些Cookie值,包括要種Cookie的domain,path,expires。
除了文中所列舉的首部字段之外,還有很多其他的首部字段,感興趣的朋友可以通過(guò)其他文章或資料來(lái)學(xué)習(xí)。
注:以上內(nèi)容均整理自《圖解HTTP》,如有侵權(quán)請(qǐng)聯(lián)系我