HTTP報文學習

HTTP報文用於HTTP協議的信息交互,分爲請求報文和響應報文。報文由首部和主體兩部分組成,中間使用空行(CR+LF)分隔html

1. 報文結構

  1. 報文由首部、空行和實體組成;
  2. 報文中首先是請求行或者狀態行,而後是各類首部字段,再就是空行和實體;
  3. 首部包含請求和響應的各類條件和屬性,主要分爲請求首部、響應首部、通用首部、實體首部和其餘,cookie就在未定義的其餘首部中。

2. 報文信息

  1. 編碼提高傳送速率:
  • 因爲須要進行編碼,會消耗更多的CPU資源;
  • 報文主體和實體主題在編碼後不一致,編碼後實體主體發生變化;
  • 對實體主體進行內容編碼後,能夠經過Content-Encoding查看編碼類型;
  • 實體主體編碼後能夠進行分塊傳輸,客戶端接收後進行解析,Transfer-Encoding:chunked。
  1. 能夠發送多部分實體對象集合,經過首部Content-Type查看信息;
  2. 能夠獲取資源的內容範圍,經過content-range首部;
  3. 服務端和客戶端能夠經過ACCEPT等首部進行協商,肯定返回的內容。

3. 通用首部字段

  1. Cache-Control:控制緩存的行爲
  • 瀏覽器緩存會使用該字段;
  • no-cache: 強制向原服務器再次驗證;
  • max-age: 必須,響應的最大值;
  1. Connection:逐跳首部、鏈接的管理
  • 管理持久鏈接;
  • 控制再也不轉發給代理的首部字段;
  1. Date:建立報文的日期時間
  2. Program:報文指令
  3. Trailer:報文末端的首部一覽
  • 報文實體後面存在的首部字段,分塊傳輸使用;
  1. Transfer-Encoding:指定報文主體的傳輸編碼方式
  • HTTP/1.1中僅對分塊傳輸有效;
  1. Upgrade:升級爲其餘協議
  2. Via:代理服務器的相關信息
  3. Warning:錯誤通知

4. 請求首部字段

  1. Accept:用戶代理可處理的媒體類型
  • text/html,application/json
  • 可使用q指定優先級,1爲最大值,如text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8;
  1. Accept-Charset:優先的字符集
  2. Accept-Encoding:優先的內容編碼
  • compress、gzip等;
  1. Accept-Language:優先的語言(天然語言)
  • zh-CN,zh;q=0.8,en;q=0.6,la;q=0.4;
  1. Authorization:Web認證信息
  2. Expect:期待服務器的特定行爲
  3. From:用戶的電子郵箱地址
  4. Host:請求資源所在的服務器
  5. If-Match:比較實體標記(ETag)
  • 與特定資源關聯;
  1. If-Modified-Since:比較資源的更新時間
  2. If-None-Match:比較實體標記(與If-Match相反)
  3. If-Range:資源未更新時發送實體Byte的範圍請求
  4. If-Unmodified-Since:比較資源的更新時間(與If-Modified-Since相反)
  5. Max-Forwards:最大傳輸逐跳數
  6. Proxy-Authorization:代理服務器要求客戶端的認證信息
  7. Range:實體的字節範圍請求
  8. Referer:對請求中的URI的原始獲取方
  9. TE:傳輸編碼的優先級
  10. User-Agent:HTTP客戶端程序的信息
  • 傳遞瀏覽器種類;

5. 響應首部字段

  1. Accept-Ranges:是否接受字節範圍請求
  2. Age:推算資源建立通過時間
  3. ETag:資源的匹配信息
  • 每分資源都有對應的ETag值;
  1. Location:令客戶端重定向至指定URI
  2. Proxy-Authenticate:代理服務器對客戶端的認證信息
  3. Retry-After:對再次發起請求的時機要求
  4. Server:HTTP服務器的安裝信息
  5. Vary:代理服務器緩存的管理信息
  6. WWW-Authenticate:服務器對客戶端的認證信息

6. 實體首部字段

  1. Allow: 資源可支持的HTTP方法
  2. Content-Encoding: 實體主體使用的編碼方式
  3. Content-Language: 實體主體的天然語言
  4. Content-Length: 實體主體的大小(單位:字節)
  5. Content-Location: 替換對應資源的URI
  6. Content-MD5: 實體主體的報文摘要
  7. Content-Range: 實體主體的位置範圍
  8. Content-Type: 實體主體的媒體類型
  9. Expires: 實體主體過時的日期時間
  10. Last-Modified: 資源的最後修改日期時間

7. 其餘首部字段

  1. 和cookie相關的首部:
  • set-cookie:響應首部,管理使用的cookie,鍵值對;
  • httponly: js沒法獲取cookie,防止跨站腳本攻擊XSS;
  • cookie:請求首部,服務器接收;
  1. X-Frame-Options:響應首部,能夠控制網站內容在其餘Web網站的Frame標籤內的顯示問題,防止點擊劫持;
  2. X-XSS-Protection:XSS防禦0/1。
相關文章
相關標籤/搜索