首部和方法配合工作,共同決定了客戶端和伺服器能做什麼事情。http協議的請求和響應報文中必定含有http首部,首部內容為客戶端和伺服器分別處理請求和響應提供所需要的資訊,對客戶端使用者來說,這些資訊中的大部分內容都無須親自檢視,因此平時在使用web的過程中感受不到它。
http請求報文由方法、uri、http版本、http首部欄位等部分構成,具體構成如下圖所示:
http響應報文由http版本、狀態碼(數字和原因短語)、http首部欄位3部分組成
在報文眾多的字段當中,http首部字段包含的資訊最為豐富。首部字段同時存在於請求和響應報文內,並涵蓋http報文相關的內容資訊。
因為http版本或擴充套件規範的變化,首部欄位可支援的字段內容略有不同。
1.1、http首部字段傳遞重要資訊
http首部欄位是構成http報文的要素之一,在客戶端和伺服器之間以http協議進行通訊的過程中,無論是請求還是響應都會使用首部字段,它能起到傳遞額外重要資訊的作用。
使用首部欄位是為了給瀏覽器和伺服器提供報文主體大小、所使用的語言、認證資訊等內容。
1.2、http首部字段結構
http首部欄位由首部欄位名和字段值構成,格式為:
首部欄位名:字段值
另外字段值對應的單個http首部字段可以有多個值,如:
keep-alive:timeout=15,max=100
http首部根據實際用途被分為以下5種型別:
2.1、通用首部
這是客戶端和伺服器都可以使用的通用首部。可以在客戶端、伺服器和其他應用程式之間提供一些非常有用的通用功能。比如,date首部就是乙個通用首部,每一端都可以用它來說明構建報文的時間和日期:
date:tue, 12 jun 2018 14:48:00 gmt
下表列出了通用的資訊性首部:
首部欄位名
說明cache-control
控制快取的行為
connection
允許客戶單和伺服器指定與請求/響應鏈結有關的選項
date
建立報文的日期時間
pragma
報文指令
trailer
如果報文採用了分塊傳輸編碼,就可以用這個首部列出位於報文拖掛部分的首部集合
transger-encoding
告知接受端為了保證報文的可靠傳輸,讀報文採用了什麼編碼方式。
upgrade
給出了傳送端可能想要「公升級」使用的新版本或協議。
via顯示了報文經過的中間節點(**、閘道器)
warning
錯誤通知
通用首部字段具體介紹可以參考
2.2請求首部
請求首部是只在請求報恩中有意義的首部。用於說明是誰或什麼在傳送請求、請求源自何處,或者客戶端的洗好及能力。伺服器可以根據請求首部給出的客戶端資訊,試著為客戶端提供更好的響應。
請求首部字段如下:
首部欄位名
說明accept
使用者**可處理的**型別
accept-charset
優先的字符集
accept-encoding
優先的內容編碼
accept-language
優先的語言(自然語言)
authorization
web認證資訊
expect
期待伺服器的特定行為
from
使用者的電子郵箱位址
host
請求資源所在伺服器
if-match
比較實體標記(etag)
if-modified-since
比較資源的更新時間
if-none-match
比較實體標記(與if-match相反)
if-range
資源未更新時傳送實體byte的範圍請求
if-unmodified-since
比較資源的更新時間(與if-modified-since相反)
max-forwards
最大傳輸逐跳數
proxy-authorization
**伺服器要求客戶端的認證資訊
range
實體的位元組範圍請求
referer
對請求中uri的原始獲取方
te傳輸編碼的優先順序
user-agent
http客戶端程式的資訊
請求首部字段具體介紹可以參考
2.3響應首部
響應首部欄位是由伺服器端向客戶端返回響應報文中所使用的字段,用於補充響應的附加資訊、伺服器資訊,以及對客戶端的附加要求等資訊。這些首部有助於客戶端處理響應,並在將來發起更好的請求。
首部欄位名
說明accept-range
是否接受位元組範圍請求
age推算資源建立經過時間
etag
資源的匹配資訊
location
令客戶端重定向至指定uri
proxy-authorization
**伺服器對客戶端的認證資訊
retry-after
對再次發起請求的時機要求
server
http伺服器的安裝資訊
vary
**伺服器快取的管理資訊
www-authenticate
伺服器對客戶端的認證資訊
響應首部字段具體介紹可以參考
2.4、實體首部
有很多首部可以用來描述http報文的復合。由於請求和響應報文中都可能包含實體部分,所以在這兩種型別的報文中都可能出現這些首部。
實體首部提供了有關實體及其內容的大量資訊,從有關物件型別的資訊,到能夠對資源使用的各種有效的請求方法。總之,實體首部可以告知報文的接受者它在對什麼進行處理。
首部欄位名
說明allow
資源可支援的http方法
content-encoding
實體主體使用的編碼方式
content-language
實體主體的自然語言
content-length
實體主體的大小(單位:位元組)
content-location
替代對應資源的uri
content-md5
實體主體的報文摘要
content-range
實體主體的位置範圍
contenr-type
實體主體的**型別
expires
實體主體過期的日期時間
last-modified
資源的最後修改日期時間
響應首部字段具體介紹可以參考
HTTP協議 HTTP實體首部
有很多首部可以用來描述http報文的復合。由於請求和響應報文中都可能包含實體部分,所以在這兩種型別的報文中都可能出現這些首部。首部欄位名 說明allow 資源可支援的http方法 content encoding 實體主體使用的編碼方式 content language 實體主體的自然語言 cont...
Http協議基礎之HTTP響應首部字段
響應首部欄位是由伺服器端向客戶端返回響應報文中所使用的字段,用於補充響應的附加資訊 伺服器資訊,以及對客戶端的附加要求等資訊。accept ranges bytes 首部字段 accept ranges 是用來告知客戶端伺服器是否能處理範圍請求,以指定獲取伺服器端某個部分的資源。可指定的字段值有兩種...
http協議(六)報文首部
http請求和響應報文內容比較多,會分為大概四部分更新,最近比較忙,沒太多時間整理 首先來看看報文結構吧 1 http請求報文 http請求報文由方法 uri http版本。http首部欄位等構成 下面給大家示例乙個訪問my view page.php的請求報文首部資訊 關於報文的首部資訊,稍微詳解...