HTTP協議06-報文首部

HTTP報文格式html

HTTP協議的請求和響應報文中一定包含HTTP首部。首部內容爲客戶端和服務器分別處理請求和響應提供所須要的信息。web

 

1)HTTP請求報文chrome

在請求中,HTTP報文由方法、URI、HTTP版本、HTTP請首部字段等部分構成緩存

下面的示例是把百度的請求頭部報文拷貝了出來服務器

GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8

 

2)HTTP響應報文app

在響應中,HTTP報文由HTTP版本、狀態碼(數字和緣由短語)、HTTP首部字段3部分構成dom

下面的示例是把百度的響應頭部報文拷貝了出來編碼

HTTP/1.1 200 OK
Bdpagetype: 2
Bdqid: 0xf3f8c7970000b1b8
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Mon, 04 Mar 2019 09:38:29 GMT
Expires: Mon, 04 Mar 2019 09:38:29 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=470; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=26524_1460_28395_21097_28569_28585_26350_28603; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

在報文衆多的字段當中,HTTP首部字段包含的信息最爲豐富,首部字段同事存在於請求和響應的報文內,並涵蓋HTTP報文相關的內容信息spa

 

3)HTTP首部字段3d

HTTP首部字段是構成HTTP報文的要素之一。在客戶端與服務器之間以HTTP協議進行通訊的過程當中,無卵是請求仍是響應都會使用首部字段,它能起到傳遞額外重要信息的做用。如報文主體大小、使用的語言、認證信息等。

3.1 首部字段結構

HTTP首部字段由首部字段名和字段值構成,中間用冒號「:」」分割。

例如:以Content-Type字段來表示報文主體的對象類型

Content-Type:text/html

首部字段也能夠有多個值

Keep-Alive:timeout=14,max=10

 

3.2 四種HTTP首部字段類型

HTTP首部字段根據實際用途被分爲如下4種類型,HTTP/1.1貴方定義了47種首部字段。

 

3.2.1 通用首部字段(General Header Fields)

請求和響應中都會用到的首部。

首部字段名 說明
Cache-Control 控制緩存的行爲
Connection 逐條首部、鏈接的管理
Date 建立報文的日期時間
Pragma 報文指令
Trailer 報文末端的首部一覽
Transfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級爲其餘協議
Via 代理服務器的相關信息
Warning 錯誤通知

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2.2 請求首部字段(Request Header Fields)

從客戶端向服務器發送請求報文時經常使用的首部。補充了從請求的附加內容、客戶端信息、響應內容相關優先級等信息。

首部字段名 說明 
 Accept  用戶代理可處理的媒體類型
 Accept-Charset  優先的字符集
 Accept-Encoding  優先的內容編碼
Accept-Language   優先的語言(天然語言)
Authorization   Web認證信息
Expect  期待服務器的特定行爲 
From  用戶的電子郵箱地址 
Host  請求資源所在的服務器 
If-Match  比較實體標記(ETag) 
If-Modified-Since  比較資源的更新時間 
If-None-Match  比較實體標記(與If-Match相反) 
If-Unmodified-Since  資源未更新時發送實體Byte的範圍請求
Max-Forwards  比較資源的更新時間(與If-Modified-Since相反) 
Proxy-Authorization  最大傳輸逐條數 
Range  代理服務器要求客戶端你的認證信息 
Referer  實體的字節的範圍請求 
TE

對請求中的URI的原始獲取方

User-Agent  傳輸編碼的優先級
 User-Agent HTTP客戶端程序的信息 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2.3 響應首部字段(Response Header Fields)

從服務器端向客戶端返回響應報文時使用的首部。補充了響應的附件內容,也會要求客戶端附加額外的內容消息。

首部字段名 說明
Accept-Ranges 是否接受字節範圍請求
Age 推算資源建立通過時間
ETag 資源的匹配信息
Location 令客戶端重定向至指定URI
Proxy-Authenticate 代理服務器對客戶端的認證信息
Retry-After 對再次發起請求的時機要求
Server HTTP服務器的安裝信息
Vary 代理服務器緩存的管理信息
WWW-Authenticate 服務器對客戶端的認證信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2.4 實體首部字段(Entity Header Fields)

針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等於實體有關的信息。

首部字段名 說明
Allow 資源可支持的HTTP方法
Content-Encoding 實體主體適用的編碼方式
Conten-Language 實體主體的天然語言
Content-Length 實體主體的大小(單位:字節)
Content-Location 替代對應資源的URI
Content-MD5 實體主體的報文摘要
Content-Range 實體主體的位置範圍
Content-Type 實體主體的媒體類型
Expires 實體主體過時的日期時間
Last-Modified 資源的最後修改日期時間

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2.5 非HTTP/1.1首部字段

在HTTP協議通訊交互中使用的首部字段,不限於RFC2616中定義的47種首部字段。還有Cookie、Set-Cookie和Content-Disposition等在其餘RFC中定義的首部字段,它們的使用頻率也很高。

這些非正式的首部字段統一概括在RFC4299HTTP Header Field Registrations中

 

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

HTTP首部講定義成緩存代理和非緩存代理的行爲,分爲2種類型。

端到端首部(End to end Header)

分在此類別的首部會轉發給請求/響應對應的最終接受目標,且必須保存在由緩存生成的響應彙總,另外規定它必須被轉發。

逐條首部(Hop-by-hop Header)

分在此類別的首部支隊單次轉發有效,會因經過緩存或代理而不在轉發。

HTTP/1.1和以後版本彙總,若是要使用hop-by-hop首部,需提供Connection首部字段

下面列舉了HTTP/1.1中的逐條首部字段。除這8個首部字段以外,其餘全部字段都屬於端到端首部

Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
Trailer
TE
Transfer-Encoding
Upgrade
相關文章
相關標籤/搜索