報文(message)
是 HTTP 通訊中的基本單位,由 8 位組字節流(octet sequence,
其中 octet 爲 8 個比特)組成,經過 HTTP 通訊傳輸。
實體(entity)
做爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實
體首部和實體主體組成。
HTTP 報文的主體用於傳輸請求或響應的實體主體。
一般,報文主體等於實體主體。只有當傳輸中進行編碼操做時,實體
主體的內容發生變化,才致使它和報文主體產生差別。
303該狀態碼錶示因爲請求對應的資源存在着另外一個 URI,應使用 GET
方法定向獲取請求的資源。
303 狀態碼和 302 Found 狀態碼有着相同的功能,但 303 狀態碼明確
表示客戶端應當採用 GET 方法獲取資源,這點與 302 狀態碼有區
別。
304 服務器端容許請求訪問資源,但未知足條件的狀況下。
307相似302,可是不容許從post方法變成get方法。
代理
每次經過代理服務器轉發請求或響應時,會追加寫入 Via 首
部信息。
使用代理服務器的理由有:利用緩存技術(稍後講解)減小網絡帶寬
的流量,組織內部針對特定網站的訪問控制,以獲取訪問日誌爲主要
目的。
緩存代理和透明代理
透明代理的意思是客戶端根本不須要知道有代理服務器的存在,會改變你的request fields(報文),並會傳送真實IP。
緩存代理是代理服務器上會將真實服務器的信息緩存一段時間,在緩存的時間範圍內,當下一次客戶端訪問代理服務器的時候,直接訪問的是代理服務器上面的緩存信息。這樣就會加速訪問速度。瀏覽器
HTTP首部
當 HTTP 報文首部中出現了兩個或兩個以上具備相同首部字段名時
會怎麼樣?這種狀況在規範內還沒有明確,根據瀏覽器內部處理邏輯
的不一樣,結果可能並不一致。有些瀏覽器會優先處理第一次出現的
首部字段,而有些則會優先處理最後出現的首部字段。緩存
主要分爲下面幾個部分:通用首部,請求首部,響應首部和實體首部。服務器
首部字段DNT屬於HTTP請求首部,其中DNT是Do Not Track的簡稱,意爲拒絕我的信息被收集,是表示拒絕被精準廣告追蹤的一種方法,0爲贊成被追蹤,1爲拒絕被追蹤網絡
通用首部字段
1.Cache-control
!!事實上 no-cache 表明不緩存過時的資源,緩存會向源服務器進行有效期確認後處理資源,也許稱爲 do-notserve-from-cache-without-revalidation 更合適。no-store 纔是真正地不進行緩存,請
讀者注意區別理解。
!!s-maxage 指令的功能和 max-age 指令的相同,它們的不一樣點是 smaxage
指令只適用於供多位用戶使用的公共緩存服務器 2。也就是
說,對於向同一用戶重複返回響應的服務器來講,這個指令沒有任何做用。
2.Connection 首部字段具有以下兩個做用。
控制再也不轉發給代理的首部字段
管理持久鏈接
3.Date 代表建立 HTTP 報文的日期和時間
4.Pragma 客戶端明確表示不接受緩存資源,針對的是全部的中間服務器(結合np-cache一塊兒使用)
5.Trailer 會事先說明在報文主體後記錄了哪些首部字段。該
首部字段可應用在 HTTP/1.1 版本分塊傳輸編碼時。
6.Transfer-Encoding 僅僅對於分塊傳輸編碼有效。
7.Upgrade是否使用更高的版本進行通訊。同時須要指定connection:Upgrade Upgrade:TLS1.1
8.Via首部字段 Via 不只用於追蹤報文的轉發,還可避免請求迴環的發生。
因此必須在通過代理時附加該首部字段內容。trace方法一塊兒使用。
9.Warning 告知用戶一些與緩存相關的問題的警告ide