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