HTTP頭部本質上就是一個傳遞額外重要信息的鍵值對.
HTTP頭部重復了怎么辦? 瀏覽器內部邏輯決定結果
類型: 通用頭部, 請求頭部, 響應頭部, 實體頭部
通用頭部:
Cache-Control: 控制緩存
Connection: 1.管理持久連接(保持連接or斷開連接) 2.控制不在轉發給代理的首部字段
Date: 報文創建時間
Trailer: 提示body之后寫入了頭部,一般用於分塊編碼
Transfer-Encoding: chunked 分塊編碼, body改為用分塊傳輸,一般與Content-Encoding經常會結合來用,其實就是針對進行了內容編碼(壓縮)的內容再進行傳輸編碼(分塊)
Upgrade: 檢測能否用更高版本的協議通信
Via: 追蹤服務器與客戶端之間請求和響應的傳輸路徑,每經過一個代理,都會在Via字段后添加自己的信息
Warning: 通常告知用戶一些緩存相關問題警告
請求首部:
Accept: 用戶能處理的數據格式和相對優先級
Accept-Charset: 用戶支持的字符集和相對優先級
Accept-Encoding: 用戶支持的內容編碼和相對優先級
Accept-Language:...語言集....
Authorization: 用戶的認證信息
Expect: 告知服務器期望做出某種特定行為 , HTTP/1.1只規定了:100-continue
From: 告知服務器用戶的電子郵件地址
Host: 告知服務器請求資源所在的主機名和端口號,HTTP/1.1規定請求必須包含,主要實現虛擬主機技術,把一台服務器划分成若干主機來運行多個網站和服務
If-xxx: 條件請求
Max-Forwords:可經過最大的服務器數目,可以調查指定傳輸路徑的通信狀況
Range: 請求資源的指定范圍 --- 服務器206響應
Range: bytes=501-1000
Referer: 表示請求是從哪個資源發起的 ps: 可以統計訪問量來源
User-Agent: 用戶操作系統和瀏覽器的版本信息
響應頭部:
Accept-Range: 是否能處理范圍請求
Age: 創建響應時間
ETag: 唯一標識分配的資源 強ETag:改變一點就改變ETag值
弱ETag:提示資源是否相同,根本改變才改變
Location: 表示重定向后的URL
Retry-After: 告知客戶端多久后再發送請求
Server: 告知客戶端服務器信息
Vary: 緩存控制
實體頭部:
Allow: 告訴用戶支持的請求方法
Content-Encoding: 告知對body內容的編碼方式(壓縮)
Content-Laguage: 告知body所用語言
Content-Length: body長度, body編碼后不能用該鍵值對傳輸!
Content-Location: 告知用於訪問資源的URL
Content-MD5: 檢查報文是否完整
Content-Range: 針對范圍請求,指定body符合請求的范圍
Content-Type: body的數據格式,和Accept表示一樣
Expires: 資源失效日期
Last-Modified: 最后修改時間
Cookie服務:
原因: HTTP協議是無狀態協議(不保存狀態,即不保留之前的一切請求或相應信息)
---> 提高效率 ---> 希望保持狀態功能,引入cookie技術 :
Cookie : 就是一段字符串,是瀏覽器保存服務器返回數據的方法,通常保存用戶身份信息
Set-Cookie : 服務器向瀏覽器中種下Cookie,當瀏覽器訪問符合條件的url,就會自動帶上這個Cookie
服務流程: 1.客戶端第一次請求時,如果服務器想保存用戶信息,服務器向客戶端響應時會帶有Set-Cookie字段
2.客戶端會保存Cookie,在下次請求時會自動帶上Cookie
3.這樣服務器收到Cookie后,就知道是哪個客戶端發來的請求,得到之前的狀態信息