HTTP報文用於HTTP協議的信息交互,分爲請求報文和響應報文。報文由首部和主體兩部分組成,中間使用空行(CR+LF)分隔html
1. 報文結構
- 報文由首部、空行和實體組成;
- 報文中首先是請求行或者狀態行,而後是各類首部字段,再就是空行和實體;
- 首部包含請求和響應的各類條件和屬性,主要分爲請求首部、響應首部、通用首部、實體首部和其餘,cookie就在未定義的其餘首部中。
2. 報文信息
- 編碼提高傳送速率:
- 因爲須要進行編碼,會消耗更多的CPU資源;
- 報文主體和實體主題在編碼後不一致,編碼後實體主體發生變化;
- 對實體主體進行內容編碼後,能夠經過Content-Encoding查看編碼類型;
- 實體主體編碼後能夠進行分塊傳輸,客戶端接收後進行解析,Transfer-Encoding:chunked。
- 能夠發送多部分實體對象集合,經過首部Content-Type查看信息;
- 能夠獲取資源的內容範圍,經過content-range首部;
- 服務端和客戶端能夠經過ACCEPT等首部進行協商,肯定返回的內容。
3. 通用首部字段
- Cache-Control:控制緩存的行爲
- 瀏覽器緩存會使用該字段;
- no-cache: 強制向原服務器再次驗證;
- max-age: 必須,響應的最大值;
- Connection:逐跳首部、鏈接的管理
- Date:建立報文的日期時間
- Program:報文指令
- Trailer:報文末端的首部一覽
- Transfer-Encoding:指定報文主體的傳輸編碼方式
- Upgrade:升級爲其餘協議
- Via:代理服務器的相關信息
- Warning:錯誤通知
4. 請求首部字段
- Accept:用戶代理可處理的媒體類型
- text/html,application/json
- 可使用q指定優先級,1爲最大值,如text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8;
- Accept-Charset:優先的字符集
- Accept-Encoding:優先的內容編碼
- Accept-Language:優先的語言(天然語言)
- zh-CN,zh;q=0.8,en;q=0.6,la;q=0.4;
- 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客戶端程序的信息
5. 響應首部字段
- Accept-Ranges:是否接受字節範圍請求
- Age:推算資源建立通過時間
- ETag:資源的匹配信息
- Location:令客戶端重定向至指定URI
- Proxy-Authenticate:代理服務器對客戶端的認證信息
- Retry-After:對再次發起請求的時機要求
- Server:HTTP服務器的安裝信息
- Vary:代理服務器緩存的管理信息
- WWW-Authenticate:服務器對客戶端的認證信息
6. 實體首部字段
- Allow: 資源可支持的HTTP方法
- Content-Encoding: 實體主體使用的編碼方式
- Content-Language: 實體主體的天然語言
- Content-Length: 實體主體的大小(單位:字節)
- Content-Location: 替換對應資源的URI
- Content-MD5: 實體主體的報文摘要
- Content-Range: 實體主體的位置範圍
- Content-Type: 實體主體的媒體類型
- Expires: 實體主體過時的日期時間
- Last-Modified: 資源的最後修改日期時間
7. 其餘首部字段
- 和cookie相關的首部:
- set-cookie:響應首部,管理使用的cookie,鍵值對;
- httponly: js沒法獲取cookie,防止跨站腳本攻擊XSS;
- cookie:請求首部,服務器接收;
- X-Frame-Options:響應首部,能夠控制網站內容在其餘Web網站的Frame標籤內的顯示問題,防止點擊劫持;
- X-XSS-Protection:XSS防禦0/1。