- HTTP報文
HTTP報文大致可分為報文首部和報文主體,兩者之間以空行[回車符和換行符]分開。通常,不應會有報文主體
-
HTTP 首部
-
HTTP報文首部
-
請求行
-
請求首部欄位
-
通用首部欄位
-
實體首部欄位
-
其它
注意:請求行包括(方法,URI,HTTP版本),HTTP首部欄位(請求首部欄位,通用首部欄位,實體首部欄位)
- HTTP請求報文:
-
METHOD
-
URI
-
HTTP版本
-
HTTP首部欄位
- HTTP響應報文
-
HTTP版本
-
狀態碼(數字原因短語)
-
HTTP首部欄位
- 報文
是HTTP通訊中的基本單位,由8位組位元組流組成,透過HTTP通訊傳輸
- 實體
作為請求或響應的有效荷載資料被傳輸,其內容由實體首部和實體主體組成,HTTP報文的主體用於傳輸請求或響應的實體主體。
通常,報文主體同於實體主體,只有在進行編碼操作的時候,實體主體和報文主體才會產生差異
- 壓縮傳輸的內容編碼
內容編碼指明應以在實體內容上的編碼格式,並保持實體資訊的原樣壓縮,內容編碼後的實體由客戶端接收並負責解碼
常用的內容編碼:
-
gzip [GNU zip]
-
compress [unix 系統的標準壓縮]
-
deflate [zlib]
-
identity [不進行編碼]
- 分割傳送分塊傳輸
在HTTP通行過程中,請求的編碼實體資源尚未全部傳輸完成之前,瀏覽器無法顯示請求頁面,在傳輸大容量資料的時候,透過把資料分割成多塊,這樣讓瀏覽器
逐步顯示頁面。這種把實體主體分塊的功能稱為分塊傳輸編碼。分塊傳輸編碼會將實體主體分成多個部分[塊]。每一塊都會用十六進位制來標記塊的大小,而實體
主體的最後一塊會使用0(CR+LF)來標記。
- 獲取部分內容的範圍請求 指定範圍傳送的請求叫做範圍請求[Range Request]
使用範圍請求的時候會使用到首部欄位 [Range]
Range: bytes=5001-10000 //5001 - 10000
Range: bytes=5001 //5001以後的所有
Range: bytes=-3000, 5000-7000 //從開始到3000,5000-7000的多重範圍請求
針對範圍請求,響應狀態碼會返回 206 Partial Content
的響應報文,對於多重範圍請求,響應首部欄位 Content-Type
會標明 multipart/byteranges
- 內容協商返回最合適的內容
內容協商機制是客戶端和服務端就響應的資源內容進行交涉,返回給客戶端最合適的內容。主要是就響應資源的語言,字符集,編碼方式。。。
內容協商主要有三種型別:
-
伺服器驅動協商 以服務端為主
-
客戶端驅動協商 以客戶端為主
-
透明協商 是伺服器驅動和客戶端驅動結合體,
- HTTP的返回狀態碼
HTTP狀態碼返回
-
2XX
-
200 OK
-
204 not content
伺服器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。 -
206 partial content
客戶端進行了範圍請求,伺服器成功執行了這部分請求,響應報文中含有content-range指定範圍的實體內容
-
-
3XX
-
301 moved permanently
永久性重定向,表示請求的資源已被分配了新的URI。 -
302 found
臨時移動資源 -
303 see other
該狀態碼錶示由於請求對應的資源存在著另一個URI,應使用get方式定向獲取請求的資源 -
304 not modified
表示客戶端傳送附帶的請求時,伺服器端允許訪問資源,但未滿足條件的情況,304狀態碼返回 -
307 temporary redirect
臨時重定向。
-
-
4XX
-
400 bad request
請求報文中存在語法錯誤,當錯誤發生的時候,需要修改請求內容再次傳送請求 -
401 unauthorized
表示傳送的請求需要有透過HTTP認證的認證資訊,(如果之前請求過一次,則表示使用者認證失敗) -
403 forbidden
請求資源的訪問被伺服器拒絕了 (未獲得檔案系統的訪問許可權,訪問許可權出現問題) -
404 not found
表明伺服器上無法找到請求的資源 (服務端拒絕請求不想說明理由的時候使用)
-
-
5XX
-
500 internal server error
服務端在執行請求時發生了錯誤,(程式發生致命錯誤或存在bug或者是臨時性故障) -
503 service unavailable
表明伺服器暫時處於超負載或正在進行停機維護,現在無法處理請求。
-
-
通訊資料轉發程式 [代理,閘道器,隧道]
-
代理 代理就是一種有轉發功能的應用程式,是屬於客戶端和服務端的中間人,它接受客戶端傳送的訊息然後再轉發給服務端,同時也把服務端的訊息轉發給
客戶端 -
閘道器 轉發其它伺服器通訊資料的伺服器,接受客戶端傳送過來的的請求時,它就像自己擁有資源的源伺服器一樣對請求進行處理
-
隧道 在相隔甚遠的客戶端和服務端兩者之間進行中轉,並保持雙方通訊連線的應用程式
本作品採用《CC 協議》,轉載必須註明作者和本文連結