# Content-MD5
> 作者:肖鵬-SpiritLing 時間:2019-11-23
```http
Content-MD5: ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=
```
首部字段 `Content-MD5` 是一串由MD5算法生成的值,其目的在于檢查報文主體在傳輸過程中是否保持完整,以及確認傳輸到達。
對報文主體執行 MD5 算法獲得218位二進制數,再通過 Base64 編碼后將結果寫入 `Content-MD5` 字段值。由于 HTTP 首部無法記錄二進制值,所以要通過 Base64 編碼處理。為確保報文有效性,作為接受方的客戶端會對報文主體在執行一次相同的MD5算法。計算出的值與字段值作比較候鳥,即可判斷出報文主體的準確性。
采用這種方法,對內容上的偶發生性改變是無從查證的,也無法檢測出惡意篡改。其中一個原因在于,內容如果能夠被篡改,那么同時意味著 `Content-MD5` 也可重新計算然后被篡改。所以處在接受階段的客戶端是無法意識到報文主體以及首部字段 `Content-MD5` 是已經被篡改過的。
> 作者:肖鵬-SpiritLing 時間:2019-11-23
- 首語
- 第一章 HTTP協議及網絡基礎
- 第二章 協議返回狀態碼
- 第三章 HTTP通用首部字段
- 第一節 Cache-Control字段
- 第二節 Connection 字段
- 第三節 Date 字段
- 第四節 Pragma 字段
- 第五節 Trailer 字段
- 第六節 Transfer-Encoding 字段
- 第七節 Upgrade 字段
- 第八節 Via 字段
- 第九節 Warning 字段
- 第四章 HTTP請求首部字段
- 第一節 Accept 字段
- 第二節 Accept-Charset 字段
- 第三節 Accept-Encoding 字段
- 第四節 Accept-Language 字段
- 第五節 Authorization 字段
- 第六節 Expect 字段
- 第七節 From 字段
- 第八節 Host 字段
- 第九節 If-Match 字段
- 第十節 If-Modified-Since 字段
- 第十一節 If-None-Match 字段
- 第十二節 If-Range 字段
- 第十三節 If-Unmodified-Since 字段
- 第十四節 Max-Forwards 字段
- 第十五節 Proxy-Authorization 字段
- 第十六節 Range 字段
- 第十七節 Referer 字段
- 第十八節 TE 字段
- 第十九節 User-Agent 字段
- 第五章 HTTP響應首部字段
- 第一節 Accept-Ranges 字段
- 第二節 Age 字段
- 第三節 ETge 字段
- 第四節 Location 字段
- 第五節 Proxy-Authenticate 字段
- 第六節 Retry-After 字段
- 第七節 Server 字段
- 第八節 Vary 字段
- 第九節 WWW-Authenticate 字段
- 第六章 HTTP實體首部字段
- 第一節 Allow 字段
- 第二節 Content-Encoding字段
- 第三節 Content-Language 字段
- 第四節 Content-Length 字段
- 第五節 Content-Location 字段
- 第六節 Content-MD5 字段
- 第七節 Content-Range 字段
- 第八節 Content-Type 字段
- 第九節 Expires 字段
- 第十節 Last-Modified 字段
- 第七章 Cookie相關和其他的首部字段