图解HTTP学习记录(六)
HTTP 首部
HTTP報(bào)文首部
HTTP請(qǐng)求報(bào)文
在請(qǐng)求中,HTTP 報(bào)文由方法、URI、HTTP 版本、HTTP 首部字段等部分構(gòu)成
HTTP響應(yīng)報(bào)文
在響應(yīng)中,HTTP 報(bào)文由 HTTP 版本、狀態(tài)碼(數(shù)字和原因短語)、HTTP 首部字段 3 部分構(gòu)成。
HTTP首部字段
HTTP首部字段結(jié)構(gòu)
HTTP 首部字段是由首部字段名和字段值構(gòu)成的,中間用冒號(hào)“:” 分隔。
首部字段名: 字段值
另外,字段值對(duì)應(yīng)單個(gè)HTTP首部字段可以有多個(gè)值,如下所示
keep-Alive: timeout= 15, max = 100
若 HTTP 首部字段重復(fù)了會(huì)如何 當(dāng) HTTP 報(bào)文首部中出現(xiàn)了兩個(gè)或兩個(gè)以上具有相同首部字段名時(shí)會(huì)怎么樣?這種情況在規(guī)范內(nèi)尚未明 確,根據(jù)瀏覽器內(nèi)部處理邏輯的不同,結(jié)果可能并不一致。有些瀏覽器會(huì)優(yōu)先處理第一次出現(xiàn)的首部字 段,而有些則會(huì)優(yōu)先處理最后出現(xiàn)的首部字段。
HTTP首部字段類型
- 通用首部字段
請(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)的信息
HTTP/1.1 首部字段一覽
通用首部字段
| 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ò)誤通知 |
請(qǐng)求首部字段
| Accept | 用戶代理可處理的媒體類型 |
| Accept-Charset | 優(yōu)先的字符集 |
| Accept-Encoding | 優(yōu)先的內(nèi)容編碼 |
| Accept-Language | 優(yōu)先的語言(自然語言) |
| Authorization | Web認(rèn)證信息 |
| Expect | 期待服務(wù)器的特定行為 |
| From | 用戶的電子郵箱地址 |
| Host | 請(qǐng)求資源所在服務(wù)器 |
| if-Match | 比較實(shí)體標(biāo)記(ETag) |
| if-Modifed-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 客戶端程序的信息 |
響應(yīng)首部字段
| Accept-Ranges | 是否接受字節(jié)范圍請(qǐng)求 |
| Age | 推算資源創(chuàng)建經(jīng)過時(shí)間 |
| ETag | 資源的匹配信息 |
| Location | 令客戶端重定向至指定URI |
| Proxy-Authenticate | 代理服務(wù)器對(duì)客戶端的認(rèn)證信息 |
| Retry-After | 對(duì)再次發(fā)起請(qǐng)求的時(shí)機(jī)要求 |
| Server | HTTP服務(wù)器的安裝信息 |
| Vary | 代理服務(wù)器緩存的管理信息 |
| WWWW-Authenticate | 服務(wù)器對(duì)客戶端的認(rèn)證信息 |
實(shí)體首部字段
| Allow | 資源可支持的HTTP方法 |
| Content-Encoding | 實(shí)體主體適用的編碼方式 |
| Content-Language | 實(shí)體主體的自然語言 |
| Content-Length | 實(shí)體主體的大小(單位:字節(jié)) |
| Content-Location | 替代對(duì)應(yīng)資源的URI |
| Content-MD5 | 實(shí)體主體的報(bào)文摘要 |
| Content-Range | 實(shí)體主體的位置范圍 |
| Content-Type | 實(shí)體主體的媒體類型 |
| Expires | 實(shí)體主體過期的日期時(shí)間 |
| Last-Modified | 資源的最后修改日期時(shí)間 |
End-to-end首部和 Hop-by-Hop首部
HTTP首部字段將定義成緩存代理和非緩存代理
端到端首部(End-to-end)
分在此類別中的首部會(huì)轉(zhuǎn)發(fā)給請(qǐng)求 / 響應(yīng)對(duì)應(yīng)的最終接收目標(biāo),且必須保存在由緩存生成的響應(yīng)中,另外規(guī) 定它必須被轉(zhuǎn)發(fā)
逐跳首部(Hop-by-Hop)
分在此類別中的首部只對(duì)單次轉(zhuǎn)發(fā)有效,會(huì)因通過緩存或代理而不再轉(zhuǎn)發(fā)。HTTP/1.1 和之后版本中,如果要 使用 hop-by-hop 首部,需提供 Connection 首部字段。
下面列舉了 HTTP/1.1 中的逐跳首部字段。除這 8 個(gè)首部字段之外,其他所有字段都屬于端到端首部。
- Connection
- Keep-Alive
- Proxy-Authenticate
- Proxy-Authorization
- Trailer
- TE
- Transfer-Encoding
- Upgrade
為CooKie服務(wù)的首部字段
其他首部
- X-Frame-Options
- X-XSS-protection
- DNT
- P3P
總結(jié)
以上是生活随笔為你收集整理的图解HTTP学习记录(六)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: puppetter安装就踩坑-解决篇
- 下一篇: git bash的安装与配置