1. 程式人生 > >讀《圖解HTTP》有感-(HTTP首部)

讀《圖解HTTP》有感-(HTTP首部)

斷開 time 範圍 報文 2.3 用戶 private 附加 匹配

寫在前面

該章節是對請求報文及響應報文的首部信息進行解析。通過該章節的學習,相信大家對首部結構,及各個首部字段的作用有個基本的了解


  • 正文

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首部)