17 - 03 - 31 圖解HTTP(35)

###### 實體首部字段 ######

實體首部字段是包含在請求報文和響應報文中的實體部分所使用的首部,用於補充內容的更新時間等與實體相關的信息。


# Allow # 

ex : Allow: GET, HEAD

首部字段Allow用於通知客戶端能夠支持 Request-URI  指定資源的所有HTTP方法。

當服務器接收到不支持的HTTP方法時,會以狀態碼 405 Method Not Allowed  作爲響應返回。

與此同時,還會把所有能支持的HTTP方法寫入首部字段 Allow後返回。

 

# Content-Encoding #

ex: Content-Encoding: gzip

首部字段 Content-Encoding會告知客戶端服務器對實體的主體部分選用的內容編碼方式。

內容編碼是指在不丟失實體信息的前提下所進行的壓縮。

主要採用以下 4  種內容編碼的方式:

gzip  

compress  

deflate 

identity


# Content-Language #

ex : Content-Language: zh-CN

首部字段 Content-Language  會告知客戶端,實體主體使用的自然語言(指中文或英文等語言)。


# Content-Length #

ex : Content-Length: 15000

首部字段Content-Length表明了實體主體部分的大小(字節)。

對實體主體進行內容編碼傳輸時,不能再用 Content-Length  首部字段。(

實體主體大小的計算方法複雜,參考RFC2616的 4.4)


#  Content-Location  #

ex : Content-Location: http://www.hackr.jp/index-ja.html

首部字段Content-Location給出與報文主體部分相對應的URI。

和首部字段Location不同,Content-Location表示的是報文主體返回資源對應的URI。

如對於使用首部字段Accept-Language  的服務器驅動型請求,當返回的頁面內容與實際請求的對象不同

時,首部字段 Content-Location內會寫明 URI。(訪問http://www.hackr.jp/  返回的對象卻是

http://www.hackr.jp/index-ja.html  等類似情況)


#  Content-MD5  #


圖:客戶端會對接收的報文主體執行相同的 MD5  算法,然後與首部字段 Content-MD5  的字段值比較

ex: Content-MD5: OGFkZDUwNGVhNGY3N2MxMDIwZmQ4NTBmY2IyTY==

首部字段 Content-MD5  是一串由 MD5  算法生成的值,其目的在於檢查報文主體在傳輸過程中是否保持完
整,以及確認傳輸到達。
對報文主體執行 MD5  算法獲得的 128  位二進制數,再通過 Base64  編碼後將結果寫入 Content-MD5  字段
值。由於 HTTP  首部無法記錄二進制值,所以要通過 Base64  編碼處理。爲確保報文的有效性,作爲接收方
的客戶端會對報文主體再執行一次相同的 MD5  算法。計算出的值與字段值作比較後,即可判斷出報文主體的
準確性。
採用這種方法,對內容上的偶發性改變是無從查證的,也無法檢測出惡意篡改。其中一個原因在於,內容如
果能夠被篡改,那麼同時意味着 Content-MD5  也可重新計算然後被篡改。所以處在接收階段的客戶端是無法
意識到報文主體以及首部字段 Content-MD5  是已經被篡改過的。





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