HTTP 和 HTTPS

HTTP vs HTTPS 比較

  • HTTP 是一個基於 TCP 的簡單請求-響應協議,HTTPS 則加入了 SSL/TLS 加密以提供安全和認證。
  • HTTPS = HTTP + 加密 + 認證 + 完整性保護
  • HTTP 是明文傳輸,而 HTTPS 更安全,使用 443 端口並帶有 SSL/TLS 加密。
    • HTTPS 使用端口 443;HTTP 使用端口 80
  • HTTPS 是有狀態的;HTTP 是無狀態的
    • HTTPS 為每個連接維持安全狀態,而 HTTP 則不然。
  • HTTPS 資源消耗更高但更安全
    • HTTPS因加密而需要更多資源,但其安全性高於HTTP。
  • HTTPS 運行於應用層和傳輸層
    • HTTPS在應用層的HTTP上結合了傳輸層的SSL協議。

HTTPS 通信過程

  1. 客戶端發起第一次握手以獲取服務器的 SSL 證書。
  2. 客戶端使用服務器的公鑰加密 AES 金鑰並發送給服務器。
  3. 雙方現在持有 AES 金鑰,並用它來加密 HTTP 消息。

HTTP 狀態碼

  • 1xx – 信息
  • 2xx – 成功
    • 200 成功: 請求成功,服務器已返回所需數據。
    • 201 已創建: 請求成功,並因此創建了一個新的資源。
    • 202 已接受: 請求已被接受進行處理,但處理尚未完成。
  • 3xx – 重定向
    • 301 永久移動: 資源已永久移至新 URL。
    • 302 暫時移動: 資源暫時移至另一個 URL,但將返回原位置。
    • 304 未修改: 自上次請求以來資源未修改,客戶端可以使用緩存的版本。
  • 4xx – 客戶端錯誤
    • 400 錯誤請求: 由於客戶端錯誤(如語法錯誤),服務器無法處理該請求。
    • 401 未經授權: 需要身份驗證,請求缺少有效的憑證。
    • 403 禁止訪問: 服務器理解請求,但拒絕授權。
    • 404 找不到: 請求的資源在服務器上找不到。
    • 429 請求過多: 客戶端在給定時間內發送了過多請求,通常是因為速率限制。
  • 5xx – 服務器錯誤
    • 500 內部服務器錯誤: 服務器遇到意外情況,無法完成請求。
    • 502 錯誤網關: 當服務器作為網關時,從上游服務器接收到無效響應。
    • 503 服務不可用: 服務器當前無法處理請求,通常是因為臨時過載或維護。
    • 504 網關超時: 當服務器作為網關時,未能及時從上游服務器接收響應。

HTTP 請求方法

  • GET: 用於獲取數據;數據顯示在 URL 中,並且有大小限制。
  • POST: 用於提交數據;較為安全,並存儲在 HTTP 主體中。

HTTP 緩存機制

  • 強緩存: 直接從本地緩存加載,無需與服務器交互。
  • 協商緩存: 與服務器確認是否可以使用本地緩存。