HTTP 首部字段
使用首部字段是為了給瀏覽器和服務(wù)器提供報(bào)文主題大小微峰、所使用的語(yǔ)言、認(rèn)證信息等蜡峰。
1. 首部字段結(jié)構(gòu)
首部字段名: 字段值
HTTP 首部字段是由首部字段名和字段值構(gòu)成的葡幸,中間用冒號(hào) :
分隔最筒。
思考:如果 HTTP 首部字段重復(fù)了會(huì)如何? 答:這種情況的處理操作尚未被明確,根據(jù)瀏覽器內(nèi)部處理邏輯的不同蔚叨,結(jié)構(gòu)可能并不一致床蜘。有些可能會(huì)有限處理第一次出現(xiàn)的首部字段,有些可能會(huì)優(yōu)先處理最后出現(xiàn)的字段蔑水。
2. ? 4種 HTTP 首部字段類型
HTTP 首部字段根據(jù)實(shí)際用途被分為以下4種類型邢锯。
類型 | 作用 |
---|---|
通用首部字段 | 請(qǐng)求報(bào)文和響應(yīng)報(bào)文兩方都會(huì)使用的首部。 |
請(qǐng)求首部字段 | 從客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文時(shí)使用的首部搀别。補(bǔ)充了請(qǐng)求的附加內(nèi)容丹擎、客戶端信息、響應(yīng)內(nèi)容相關(guān)優(yōu)先級(jí)等信息歇父。 |
響應(yīng)首部字段 | 從服務(wù)器向客戶端返回響應(yīng)報(bào)文時(shí)使用的首部蒂培。補(bǔ)充了響應(yīng)的附加內(nèi)容,也會(huì)要求客戶端附加額外的內(nèi)容信息榜苫。 |
實(shí)體首部字段 | 針對(duì)請(qǐng)求報(bào)文和響應(yīng)報(bào)文的實(shí)體部分使用的首部护戳。補(bǔ)充了資源內(nèi)容更新時(shí)間等與實(shí)體有關(guān)的信息。 |
3. HTTP/1.1 首部字段一覽
1.通用首部字段
首部字段名 | 說(shuō)明 |
---|---|
Cache-Control | 控制緩存的行為 |
Connection | 逐跳首部垂睬、連接的管理 |
Date | 創(chuàng)建報(bào)文的日期時(shí)間 |
Pragma | 報(bào)文指令 |
Trailer | 報(bào)文末端的首部一覽 |
Transfer-Encoding | 指定報(bào)文主體的傳輸編碼方式 |
Upgrade | 升級(jí)為其他協(xié)議 |
Via | 代理服務(wù)器的相關(guān)信息 |
Warning | 錯(cuò)誤通知 |
2.請(qǐng)求首部字段
首部字段名 | 說(shuō)明 |
---|---|
Accept | 用戶代理可處理的媒體類型 |
Accept-Charset | 優(yōu)先的字符集 |
Accept-Encoding | 優(yōu)先的內(nèi)容編碼 |
Accept-Language | 優(yōu)先的語(yǔ)言 |
Authorization | Web 認(rèn)證信息 |
Expect | 期待服務(wù)器的特定行為 |
From | 用戶的電子郵箱地址 |
Host | 請(qǐng)求資源所在服務(wù)器 |
If-Match | 比較實(shí)體標(biāo)記(ETag) |
If-Modified-Since | 比較資源的更新時(shí)間 |
If-None-Match | 比較實(shí)體標(biāo)記(與 If-Match 相反) |
If-Range | 資源未更新時(shí)發(fā)送實(shí)體 Byte 的范圍請(qǐng)求 |
If-Unmodified-Since | 比較資源的更新時(shí)間(與 If-Modified-Since 相反) |
Max-Forwards | 最大傳輸逐跳數(shù) |
Proxy-Authorization | 代理服務(wù)器要求客戶端的認(rèn)證信息 |
Range | 實(shí)體的字節(jié)范圍請(qǐng)求 |
Referer | 對(duì)請(qǐng)求中 URI 的原始獲取方 |
TE | 傳輸編碼的優(yōu)先級(jí) |
User-Agent | HTTP 客戶端程序的信息 |
3.響應(yīng)首部字段
首部字段名 | 說(shuō)明 |
---|---|
Accept-Ranges | 是否接受字節(jié)范圍請(qǐng)求 |
Age | 推算資源創(chuàng)建經(jīng)過(guò)時(shí)間 |
ETag | 資源的匹配信息 |
Location | 令客戶端重定向至指定URI |
Proxy-Authenticate | 代理服務(wù)器對(duì)客戶端的認(rèn)證信息 |
Retry-After | 對(duì)再次發(fā)起請(qǐng)求的時(shí)機(jī)要求 |
Server | HTTP 服務(wù)器的安裝信息 |
Vary | 代理服務(wù)器緩存的管理信息 |
WWW-Authenticate | 服務(wù)器對(duì)客戶端的認(rèn)證信息 |
4.實(shí)體首部字段
首部字段名 | 說(shuō)明 |
---|---|
Allow | 資源可支持的 HTTP 方法 |
Content-Encoding | 實(shí)體主體適用的編碼方式 |
Content-Language | 實(shí)體主體的自然語(yǔ)言 |
Content-Length | 實(shí)體主體的大邢被摹(單位:字節(jié)) |
Content-Location | 替代對(duì)應(yīng)資源的 URI |
Content-MD5 | 實(shí)體主體的報(bào)文摘要 |
Content-Range | 實(shí)體主體的位置范圍 |
Content-Type | 實(shí)體主體的媒體類型 |
Expires | 實(shí)體主體過(guò)期的日期時(shí)間 |
Last-Modified | 資源的最后修改日期時(shí)間 |
4. End-to-end 首部和 Hop-by-hop 首部
HTTP 首部字段將定義成緩存代理和非緩存代理的行為,分成 2 種類型驹饺。
4.1 端到端首部(End-to-end Header)
此類別中的首部會(huì)轉(zhuǎn)發(fā)給請(qǐng)求/響應(yīng)對(duì)應(yīng)的最終接收目標(biāo)钳枕,且必須保存在由緩存生成的響應(yīng)中,另外規(guī)定它必須被轉(zhuǎn)發(fā)逻淌。
4.2 逐跳首部(Hop-by-hop Header)
此類別中的首部只對(duì)單次轉(zhuǎn)發(fā)有效么伯,會(huì)因通過(guò)緩存或代理而不再轉(zhuǎn)發(fā)疟暖。 HTTP/1.1 和之后的版本中卡儒,如果要使用逐跳首部,需要提供 Connection 首部字段俐巴。
下面列舉了HTTP/1.1中的逐跳首部字段骨望。除這8個(gè)首部字段之外,其他所有字段都屬于端到端首部欣舵。
逐跳首部字段
- Connection
- Keep-Alive
- Proxy-Authenticate
- Proxy-Authorization
- Trailer
- TE
- Transfer-Encoding
- Upgrade