學習筆記--HTTP-字段總結(一)-與傳輸實體相關的報文字段總結

目錄

 

一、概述

二、介紹一些常用字段

三、傳輸實體的一些屬性

1、傳輸的數據類型

2、實體的語言類型和編碼

3、編碼類型

四、文件類型和壓縮編碼字段

1、Accept

2、Content-Type

3、Accept-Encoding

4、Content-Encoding

五、語言類型和編碼字段

1、Accept-Language

2、Content-Language

3、Accept-Charset

4、charset="xxx"

六、q表示的優先級

七、Vary協商字段

八、HTTP傳輸大文件的方法和相關字段

1、壓縮

2、分塊傳輸

3、範圍請求

4、多段數據傳輸


一、概述:

對HTTP報文的處理就是對首部字段的處理,理解了頭部字段就是理解了HTTP。

 

二、介紹一些常用字段:

  1. Host:請求字段,給出了接收請求的服務器的主機名和端口號;
  2. User-Agent:請求字段,將發起請求的應用程序名稱告知服務器;
  3. Date:通用字段,通常出現在響應報文裏;
  4. Server:響應字段,服務器應用程序的名稱和版本;
  5. Content-Length:報文裏body的長度;

 

三、傳輸實體的一些屬性:

1、傳輸的數據類型:

MIME type:被傳輸的基本媒體類型;

相關字段:Accept, Content-Type;

常用類型:

text (純文本類型):

  • text/html:html類型
  • text/plain:純文本類型
  • text/css:樣式表

image (圖像文件):

  • image/gif: gif格式的圖像
  • image/jpeg:jpeg格式的圖像
  • image/png:png格式的圖像

application(數據格式不固定,可能是文本也可能是二進制,必須由上層應用程序來解釋):

  • application/json:json格式的數據
  • application/javascript:js文件
  • application/pdf:pdf格式的文件
  • application/octet-stream:不透明的二進制數據

注意:Content-Type 說明的是原始實體的媒體類型,即未被編碼之前的實體主體類型。

2、實體的語言類型和編碼:

相關字段:Accept-Language,Content-Language

語言類型(人類使用的自然語言):

  • en : 英語
  • en-US : 美式英語
  • en-GB : 英式英語
  • zh-CN : 常用漢語

編碼(字符編碼,用於處理文字):

  • Unicode
  • UTF-8

3、編碼類型:

爲了節約帶寬,常會將大型數據進行壓縮傳輸。

相關字段:Content-Encoding,Accept-Encoding

常用壓縮格式:

  • gzip: GUN zip 壓縮格式
  • deflate: zlib(deflate)
  • br:專爲HTTP優化的新壓縮算法

四、文件類型和壓縮編碼字段:

兩個Accept 和 Content 字段

Accept:客戶端表示要接受的數據相關的屬性;

Content: 服務端表示傳輸給客戶端的數據類型;

1、Accept:

標記的是客戶端可理解的MIME type,可以用","做分隔符,

例如:

Accept: text/html,application/xml,image/webp,image/png

表示可以接受:HTML、xml的文件,還有webp和png的圖片。

2、Content-Type:

服務器在響應頭裏告知客戶端數據的真實類型。

例如:

Content-Type:text/html

Content-Type:image/png

3、Accept-Encoding:

標記客戶端支持的壓縮格式,格式同Accept字段。

4、Content-Encoding:

服務端告知客戶端實體數據實際的壓縮編碼類型。

注意:在客戶端POST請求中,Accept都爲Content字段

五、語言類型和編碼字段:

兩個Accept,一個Content,一個charset=”xxx“

1、Accept-Language:

客戶端可理解的自然語言。

例如:

Accept-Language: zh-CN,zh-en

2、Content-Language:

服務端告知客戶端實體數據的實際語言。

例如:

Content-Language:zh-CN

3、Accept-Charset:

客戶端接收的編碼類型

例如:

Accept-Charset:gbk,utf-8

4、charset="xxx":

注意:響應字段必須爲:Content-Type中用charset=”xxx“表示。

例如:

Content-Type : text/html;charset=utf-

六、q表示的優先級:

HTTP中,可在Accept,Accept-Encoding,Accept-Language 等請求字段加一個 q (質量)參數說明編碼的優先級。

  • q 從0.0 到 1.0
  • 0.0:表示客戶端不想接受所說明的編碼
  • 1.0:表示客戶端最想接受的編碼類型。

例如:

Accept:text/html,application/xml;q=0.9,*/*;q=0.8

七、Vary協商字段:

響應報文,記錄服務器在內容時參考的請求字段:

例如:

Vary:Accept-Encoding,User-Agent,Accept

表示服務器依據了Accept-Encoding,User-Agent和Accept這三個字段,然後決定了發回的響應報文。

八、HTTP傳輸大文件的方法和相關字段:

1、壓縮:

見前文。

2、分塊傳輸:

將大文件拆開分解成多個小塊

相關字段:Transfer-Encoding

告知接收方爲了可靠地傳輸報文,已經對其進行了編碼。

例如:

Transfer-Encoding:chunked

表示報文中地body是分塊逐步發送。

注意:Transfer-Encoding 和 Content-Length 是互斥地(不能同時出現)。

3、範圍請求:

表示可以獲取一個文件中的某一些分段的數據。

相關字段:

Range:客戶端字段,屬性:bytes=x-y

(x-y表示數據的範圍)

Accept-Ranges:bytes

對於服務器來說,範圍請求的功能不是必須的,所以服務器需要在響應報文中包含此字段告知客戶端。

當服務器接收到Rnge字段後,它的動作是:

  1. 檢查是否越界;
  2. 若範圍正確,就根據Range中的屬性計算偏移段,返回狀態碼:”206 Partial Content“
  3. 服務器裏添加一個響應頭字段:Content-Range(告知片段的實際偏移量和資源的總量),格式:bytes x-y/length
  4. 通過TCP將數據發送給客戶端

4、多段數據傳輸:

在一次傳輸中,可以傳輸多段分段的數據。

相關字段:

請求:

Range字段,用逗號分隔;

例如:

Range: bytes=0-9, 20-29

響應:

Content-Type字段

屬性:

multipart/byteranges:表示報文的 body 是由多段字節序列組成的

boundary: 給出段之間的分隔標記

例如:

Content-Type: multipart/byteranges; boundary=00000000001

“- -00000000001”就是多段的分隔符


參考資料:

1.《HTTP權威指南》

2.極客時間專欄-透視HTTP協議

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章