目錄
HTTP/HTTPS協議簡介
HTTP協議
HTTPS協議
請求 - 響應模型
HTTP請求
(二)HTTP響應
HTTPS協議與HTTP協議在請求 - 響應模型中的區別
HTTP/HTTPS協議簡介
HTTP協議
定義
HTTP(HyperText Transfer Protocol)即超文本傳輸協議,是互聯網上應用最為廣泛的協議之一。它是一種無狀態的、面向事務的協議,用于客戶端(如瀏覽器)和服務器之間的通信。無狀態意味著每次請求 - 響應對都是獨立的,服務器不會保存之前請求的狀態信息。
工作原理
客戶端(如瀏覽器)通過發送HTTP請求到服務器來獲取資源,服務器收到請求后進行處理,并返回相應的HTTP響應。這個過程是基于TCP/IP協議的,通常使用80端口。
HTTPS協議
定義
HTTPS(HyperText Transfer Protocol Secure)是HTTP協議的安全版本。它通過在HTTP的基礎上加入SSL/TLS(Secure Sockets Layer/Transport Layer Security)協議來實現數據的加密傳輸。SSL/TLS協議提供了數據加密、數據完整性和身份驗證等功能。
工作原理
在HTTPS通信過程中,客戶端和服務器之間首先會進行SSL/TLS握手。握手過程中,服務器會向客戶端發送自己的數字證書,客戶端會驗證證書的有效性(包括證書是否由受信任的證書頒發機構簽發、證書是否在有效期內等)。如果證書驗證通過,客戶端和服務器會協商加密算法和密鑰,然后使用這些密鑰對后續的HTTP請求和響應進行加密傳輸。HTTPS通常使用443端口。
請求 - 響應模型
HTTP請求
請求行
包括請求方法、請求URI(Uniform Resource Identifier,統一資源標識符)和HTTP協議版本。例如,“GET /index.html HTTP/1.1”。
請求方法
- GET:用于請求服務器返回指定資源的內容,是最常用的HTTP方法之一。例如,瀏覽器訪問一個網頁時通常會使用GET方法。
- POST:用于向服務器提交數據,請求服務器處理這些數據。例如,提交表單數據時通常會使用POST方法。POST方法提交的數據不會顯示在URL中,相對GET方法更安全。
- PUT:用于向服務器上傳一個資源,通常用于更新或創建資源。
- DELETE:用于請求服務器刪除指定的資源。
- HEAD:與GET方法類似,但服務器只返回響應頭,不返回響應體。這在檢查資源是否存在或獲取資源的元數據時很有用。
- OPTIONS:用于獲取服務器支持的HTTP方法列表。
- CONNECT:用于建立一個到服務器的隧道,常用于代理服務器。
- PATCH:用于對資源進行部分修改。
請求頭
包含一些額外的信息,用于描述請求的細節。例如:
Host:指定請求的主機名和端口號。
- User - Agent:描述客戶端的軟件環境,如瀏覽器類型、操作系統等。服務器可以根據這個信息來優化響應內容。
- Accept:告訴服務器客戶端可以接受的響應內容類型,如“Accept: text/html”表示客戶端希望接收HTML格式的內容。
- Content - Length:表示請求體的長度,單位是字節。對于POST或PUT請求,如果請求體中有數據,這個字段是很有用的。
- Authorization:用于身份驗證,如在請求頭中包含用戶名和密碼的Base64編碼。
請求體
- 對于POST、PUT等方法,請求體可以包含要提交到服務器的數據,如表單數據、JSON格式的數據等。例如,提交一個用戶注冊表單時,請求體可能包含用戶名、密碼等信息。
(二)HTTP響應
狀態行
包括HTTP協議版本、狀態碼和原因短語。例如,“HTTP/1.1 200 OK”。
狀態碼
1xx(信息性狀態碼):表示請求已被接收,繼續處理。如100 Continue,表示客戶端可以繼續發送請求體。
2xx(成功狀態碼):表示請求已成功被服務器接收、理解、并接受。
- 200 OK:請求成功,服務器返回了請求的資源。
- 201 Created:請求成功,并且服務器創建了新的資源。
- 204 No Content:請求成功,但響應體為空。
3xx(重定向狀態碼):表示需要后續操作才能完成請求。
- 301 Moved Permanently:永久重定向,表示請求的資源已被永久移動到新的URL。
- 302 Found:臨時重定向,表示請求的資源暫時被移動到新的URL。
- 304 Not Modified:表示請求的資源未被修改,客戶端可以使用本地緩存的版本。
4xx(客戶端錯誤狀態碼):表示客戶端可能發生了錯誤,妨礙了服務器的處理。
- 400 Bad Request:請求語法有誤,服務器無法理解。
- 401 Unauthorized:請求未授權,需要身份驗證。
- 403 Forbidden:服務器理解請求但拒絕執行。
- 404 Not Found:請求的資源在服務器上未找到。
5xx(服務器錯誤狀態碼):表示服務器在處理請求的過程中發生了錯誤。
- 500 Internal Server Error:服務器內部錯誤,無法完成請求。
- 502 Bad Gateway:服務器作為網關或代理時,從上游服務器收到無效響應。
- 503 Service Unavailable:服務器當前不可用,暫時無法處理請求。
響應頭
包含一些額外的信息,用于描述響應的細節。例如:
- Content - Type:表示響應體的MIME類型,如“Content - Type: text/html”表示響應體是HTML格式。
- Content - Length:表示響應體的長度,單位是字節。
- Location:在3xx重定向響應中,該字段表示新的資源位置。
- Set - Cookie:用于設置客戶端的Cookie。
響應體
包含服務器返回的資源內容,如HTML頁面、圖片、JSON數據等。對于200 OK響應,響應體就是請求的資源內容;對于404 Not Found響應,響應體可能是一個錯誤頁面。
HTTPS協議與HTTP協議在請求 - 響應模型中的區別
在HTTPS協議中,整個請求 - 響應過程是加密的。請求行、請求頭、請求體、狀態行、響應頭和響應體都被加密傳輸,防止數據在傳輸過程中被竊聽或篡改。而HTTP協議的這些內容都是以明文形式傳輸,安全性較低。