HTTP首部

明易發表於2018-12-10

HTTP請求:

客戶端連線到伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了一個HTTP請求,一個完整的HTTP請求包含如下內容:

請求報文

請求報文結構圖
這裡寫圖片描述

http的請求行:

請求方式:

POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的請求方式:POST、GET
這兩種請求的方式的區別主要表現在資料傳遞上:
如請求方式為GET方式,可以通過URL地址後面以“?”的形式提交給伺服器:
GET  index.html?user=tom&passwd=1234  HTTP/1.1

GET方式的特點:在URL地址後面的附帶的引數是有限制的,其資料的容量通常不能超過1k

POST方式,則可以在請求的實體內容中向伺服器傳送資料,POST方式的特點是:傳送的資料量是無限制的。

訊息頭

Accept   :text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection    :keep-alive
Host        :139.159.238.105
Upgrade-Insecure-Requests:1
User-Agent  :Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0
請求的首部欄位 含義
Accept 用於告訴伺服器,客戶端支援的資料型別
Accept-charset 通知伺服器客戶端支援的字符集
Accept-Encoding 客戶端支援的壓縮格式
Accept-Language 客戶端的語言環境
Host 通知伺服器客戶端訪問的主機名
If-Modified-Sine 通知伺服器快取時間,如果該值的時間大於伺服器資源修改的時間,則希望處理該請求
Referer 通知伺服器通過哪個資源來訪問(盜鏈)
User-Agent 通知伺服器客戶端的軟體環境
Connection 是否保持連結
Date 建立報文的日期和時間

響應報文

響應報文的結構圖:
這裡寫圖片描述

響應行

HTTP/1.1 200 ok

狀態碼:

狀態碼 含義
200 請求成功
301 永久重定向
302 臨時重定向
304、307 快取相關的
400 請求報文存在語法問題
401 認證錯誤
403 訪問許可權受限
404 沒有找到請求的資源
500 伺服器端執行請求時發生錯誤,可能是存在bug或者是臨時故障

響應頭

Accept-Rangesbytes
Connection:Keep-Alive
Content-Length4
Content-Type:text/html; charset=UTF-8
Date:Mon, 21 Aug 2017 07:17:46 GMT
ETag:"4-5573e04d9c5f8"
Keep-Alive:timeout=5, max=100
Last-Modified:Mon, 21 Aug 2017 06:59:24 GMT
Server:Apache/2.4.6 (CentOS)
響應的頭部欄位 含義
location 和3xx狀態碼,重定向到指定的位置
server 告知客戶端伺服器的型別
Content-Length 告訴瀏覽器回送資料的長度
Content-Language 回送資料的語言格式
Content-Type 控制那種方式開啟資料
Last-Modified 當前資源的最後快取時間
ReFresh 間隔多長時間重新整理一次
Content-disposition 伺服器告訴瀏覽器以下載方式開啟資料
Transfer-Encoding 伺服器告訴瀏覽器資料的傳送格式
ETag 快取相關的頭(可以做到時時更新,一般的快取是秒級的更新)
Expires 告訴瀏覽器回送資源的快取時間,-1或0,則不快取
Cache-Control no-cache 不要快取
Pragma no-cache 不要快取
connection close/keep-alive 是否斷開連線

HTTP實現斷點續傳(Range)

HTTP請求訊息欄位

range頭欄位指示伺服器只傳輸一部分web資源 。這個頭用來實現斷點續傳。Range欄位可以通過三種格式設定傳輸的位元組範圍:

Range: byte=1000-2000
        傳輸範圍從1000-2000
Range:byte=1000-
        傳送web資源中第1000個位元組所有的內容
Range:byte=1000
        傳輸最後1000個位元組

HTTP響應訊息欄位

Accept-Range:這個欄位說明web伺服器是否支援Range支援,如果支援返回Accept-Range:byte,如果不支援,則返回,Accept-Range:none
Content-Range:指定返回web資源的位元組範圍,這個欄位的格式:
Content-Range:1000-3000

相關文章