讀《圖解HTTP》有感-(HTTP首部)
寫在前面
該章節是對請求報文及響應報文的首部信息進行解析。通過該章節的學習,相信大家對首部結構,及各個首部字段的作用有個基本的了解
- 正文
HTTP報文由HTTP報文首部、空行以及HTTP報文主體組成。
HTTP報文主體主要裝載用戶和資源的信息。
HTTP報文首部為客戶端以及服務端提供所需要的處理信息。
1、HTTP報文首部
HTTP首部包括HTTP請求報文首部和HTTP響應報文首部。
HTTP請求報文首部主要由方法(如:POST、GET)、URI、HTTP版本、HTTP首部字段等組成
HTTP響應報文首部主要由HTTP版本、狀態碼(編碼和原因短語)、HTTP首部字段等組成
(請求報文首部組成圖示)
(響應報文首部組成圖示)
2、HTTP首部字段
2.1、首部字段為瀏覽器和服務器提供提供報文主體大小、語言和認證信息等
2.2、HTTP首部字段由首部字段名和字段值構成(形如:key:value)
如:Content-Type: text/html; 表示報文主體類型為text/html類型
Keep-Alive:timeout=15, max=100;字段值有個值的表示方式
2.3、4種HTTP首部字段類型(根據用途劃分)
a、通用首部字段(請求報文和響應報文都包括該類型)
b、請求首部字段(補充了請求的附加內容、客戶端信息、響應內容優先級等信息)
c、響應首部字段(補充了響應的附加內容)
d、實體首部字段(報文實體使用的首部;補充了資源內容,更新時間等相關的實體信息)
3、HTTP/1.1通用首部字段
3.1、Cache-Control(操作緩存工作機制)
該首部字段名支持多個字段值(如:Cache-Control:private,max-age=0,no-cache)
HTTP/1.1版本中在用的Cache-Control字段值列表:
(請求首部字段值列表)
(響應首部字段值列表)
3.2、Connection
3.2.1、控制不再轉發給代理的首部字段
(這裏通過設置Connection:Upgrade,則首部字段中的Upgrade將不再轉發給代理服務器)
3.2.2、管理持久連接
HTTP/1.1默認是持久連接的,也就是說如果通信雙方沒有明確要斷開連接,那麽將會利用這一次的連接來進行多個請求和響應通信
(如:Connection:Keep-Alive)
3.3、Date
Date首部字段表示創建HTTP報文的日期和時間
3.4、Via
Via首部字段是為了追蹤報文在通信鏈路的傳輸路徑;報文通過網關和代理,網關和代理會把服務器的信息添加到Via首部字段值中,再進行轉發,這樣就可以得知報文經過了鏈路中的哪些機器去路由
4、請求報文首部字段
4.1、Accept【通知服務器,客戶端需要獲取的媒體(如:文本,視頻音頻等)類型以及媒體類型的優先級】
Accept的擴展類型有:Accept-Charset、Accept-Encoding、Accept-Language
4.2、Authorization(當服務器需要認證消息時,通過添加Authorization首部字段來告訴服務器,用戶代理的認證信息)
4.3、From(告訴服務器使用用戶代理的用戶的電子郵件地址)
4.4、Host【當一臺服務器上部署多個域名的虛擬機時,通過該字段告訴服務器,請求是哪臺虛擬主機(如:Host:www.cnblogs.com)】
4.5、if-*
if-*格式的首部字段是帶條件請求,也就是說只用服務器匹配了該首部字段的字段值後,服務器才會處理請求
4.6、Max-Forwards(限制報文在通信鏈路上經過代理服務器的長度)
5、響應報文首部字段
5.1、Accept-Ranges(告知客戶端,服務端是否可以處理範圍請求。其值可以是:none(表示不支持),bytes)
5.2、Age(告知客戶端,服務端在多久之前處理過該請求。其單位為秒)
5.3、Etag(告知客戶端,報文實體在服務端的標識)
5.3、Location(告知客戶端請求的資源已被重定向到其他URI地址)
5.4、Proxy-Authenticate(告訴客戶端,代理服務需要的認證信息)
5.5、Retry-After(告訴客戶端多久之後才能再次請求服務端)
5.6、Server(告訴客戶端,服務端安裝的HTTP服務器信息)
5.7、WWW-Authenticate(告訴客戶端,服務端使用的HTTP認證方案)
6、實體報文首部字段
6.1、Allow(告訴客戶端,服務端所支持的HTTP請求方法類型)
6.2、Content-Encodeing(告訴客戶端,服務端對於請求的實體的主體的內容所采用的編碼格式)
6.3、Content-Language(告訴客戶端,實體主體使用的自然語言[如:中國中文:zh-CN])
6.4、Content-Length(告訴客戶端,實體主體的大小【單位為字節】)
6.5、Content-Location(告訴客戶端,實體主體的對應的URI地址)
6.6、Content-Type(告訴客戶端,實體主體對象采用的媒體類型)
7、為cookie服務的首部字段
因為cookie未被編入HTTP/1.1 RFC2616,但是Cookie對於管理用戶的狀態是十分重要的
(set-Cookie支持的屬性及屬性值)
9、補充說明
9.1、HTTP/1.1首部字段列表(供參考)
(請求首部字段)
(響應首部字段)
(實體首部字段)
- 交流學習
筆者能力有限。如有紕漏,望斧正
2017-10-17
於長沙
讀《圖解HTTP》有感-(HTTP首部)