前言
每一次HTTP協議一定包含HTTP報文首部,首部的信息為客戶端和服務器分別處理請求和響應提供所需要的信息.
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8
HTTP/1.1 200 OK
Server: bfe/1.0.8.18
Date: Tue, 03 Jan 2017 13:32:36 GMT
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: private
Expires: Tue, 03 Jan 2017 13:32:35 GMT
Content-Encoding: gzip
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=172800
HTTP報文首部
HTTP首部字段是構成HTTP報文的要素之一,無論是請求還是響應都要用到報文首部,起到傳遞額外信息的作用。一般提供了報文的大小,接受的語言,是否壓縮,認證信息。
HTTP首部字段是以key:value 鍵值對組成 中間用冒號:分開。 首部以Content-Type: text/html 來表示主體的對象類型。值可以有多個。
HTTP報文首部分類
- 通用首部字段
1.1 Cache-Control 控制緩存的行為
1.2 Connection 連接的管理(keep alive)
1.3 Date 創建報文的日期
1.4 Pragma 報文指令
1.5 Update 升級為其他協議
1.6 Via 代理服務器的相關信息
1.7 Warning 錯誤通知 - 請求首部字段
2.1 Accept 用戶代理可處理的媒體類型
2.2 Accept-Charset 優先的字符集
2.3 Accept-Encoding 優先的內容編碼
2.4 Accept-Language 優先的自然語言
2.5 Authorization Web認證信息
2.6 Host 請求資源所在服務器
2.7 if-Match 比較實體標記(ETag)
2.8 If-Modified-Since 比較資源的更新時間
2.9 If-None-Match 比較實體標記(與If-Match相反)
2.10 If-Unmodified-Since 比較資源的更想時間
2.11 Range 實體的字節范圍請求
2.12 User-Agent HTTP客戶端程序的信息
2.13 Max-Forwards 最大傳輸跳數 - 響應首部字段
3.1 Accept-Ranges 是否接受字節范圍請求
3.2 Age 推算資源創建經過時間
3.3 ETag 資源的匹配信息
3.4 Location 令客戶端重定向至指定URI
3.5 Server HTTP服務器的安裝信息 - 實體首部字段
4.1 Allow 資源可支持的HTTP方法
4.2 Content-Encoding 實體數據的編碼方式
4.3 Content-Language 實體數據的自然語言
4.4 Content-Length 實體數據的大小(單位 字節)
4.5 Content-Type 實體的媒體類型
4.6 Expires 實體數據過期的日期時間
4.7 Last-Modified 資源的最后修改日期時間
非HTTP 首部字段
Cookie 請求報文用于標識客戶端
Set-Cookie 客戶端第一次請求 響應報文返回給客戶端的
Conetnt-Disposition 文件上傳用來描述文件信息
HTTP 首部字段將定義成緩存代理和非緩存代理的行為
- 端到端首部
此類別的首部會轉發給請求 響應的最后接受目標,它必須被轉發。 - 逐跳首部
分在此類的首部只對單此轉發有效,會因通過代理而不再轉發
- Connection
- Keep-Alive
- Proxy-Authenticate
- Proxy-Authorization
- Trailer
- TE
- Transfer-Encoding
- Upgrade