02-2. HTTP 請求與回應 ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐ (簡單)
🎯 本篇重點 深入理解 HTTP 請求和回應的結構、常用標頭的意義、如何使用開發者工具觀察,以及實際應用範例。
🤔 什麼是 HTTP 請求和回應? 一句話解釋: HTTP 請求就像是「訂餐單」,HTTP 回應就像是「外送餐點」。
你(瀏覽器) → 餐廳(伺服器) 請求(訂餐單): - 餐廳名稱(Host) - 餐點名稱(URL) - 訂餐方式(Method) - 特殊需求(Headers) - 備註(Body) 回應(外送餐點): - 訂單狀態(Status Code) - 餐點內容(Body) - 包裝資訊(Headers) 📤 HTTP 請求(Request)結構 完整結構 GET /api/users/123 HTTP/1.1 ← 1️⃣ 請求行(Request Line) Host: api.example.com ← 2️⃣ 標頭(Headers) User-Agent: Mozilla/5.0 Accept: application/json Authorization: Bearer TOKEN123 Content-Type: application/json Connection: keep-alive ← 3️⃣ 空行(必須) {"update": "data"} ← 4️⃣ 主體(Body,可選) 1️⃣ 請求行(Request Line) GET /api/users/123 HTTP/1.
Yoru Karu Studio
程式設計學習筆記 | 生活心得程式設計學習筆記 | 生活心得
02-3. HTTP 方法(GET、POST、PUT、DELETE) ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐ (簡單)
🎯 本篇重點 深入理解 HTTP 各種方法的用途、差異、冪等性、安全性,以及 RESTful API 設計原則。
🤔 什麼是 HTTP 方法? HTTP Method(HTTP 動詞) = 告訴伺服器你想做什麼操作
一句話解釋: HTTP 方法就像是對圖書館員說的「動詞」:借書(GET)、還書(POST)、換書(PUT)、退書(DELETE)。
📚 用圖書館操作來比喻 HTTP 方法 圖書館場景 HTTP 方法 查詢書籍資訊 GET /books/123 (只看不動) → 取得書籍資訊 借書(新增借閱記錄) POST /borrow → 建立新的借閱記錄 更新借閱資訊 PUT /borrow/456 (完整更換) → 更新整筆借閱記錄 延長借閱期限 PATCH /borrow/456 (部分修改) → 只更新到期日期 取消借閱 DELETE /borrow/456 → 刪除借閱記錄 查詢圖書館有哪些服務 OPTIONS / → 查詢支援的方法 只問書在不在 HEAD /books/123 (不拿書) → 只取得標頭,不取內容 🔍 HTTP 方法完整介紹 GET - 取得資源 用途: - 讀取資料 - 查詢資訊 - 不修改伺服器資料 特性: ✅ 安全(Safe)- 不會修改資料 ✅ 冪等(Idempotent)- 多次請求結果相同 ✅ 可快取(Cacheable) ✅ 參數在 URL 中 範例: GET /api/users/123 HTTP/1.
02-4. HTTP 狀態碼完整指南 ⏱️ 閱讀時間: 15 分鐘 🎯 難度: ⭐⭐ (簡單)
🎯 本篇重點 完整理解 HTTP 狀態碼的分類、常見狀態碼的意義、使用場景,以及如何在實際開發中正確使用。
🤔 什麼是 HTTP 狀態碼? HTTP Status Code = 伺服器告訴客戶端「請求處理結果」的代碼
一句話解釋: HTTP 狀態碼就像是餐廳服務生回應你訂餐的狀態:「好的」(200)、「找不到這道菜」(404)、「廚房壞了」(500)。
🍽️ 用餐廳點餐來比喻狀態碼 你(客戶端) → 服務生(伺服器) 【2xx - 成功】 你:我要一份牛排 服務生:好的,馬上來!(200 OK) 服務生:已為您建立訂單(201 Created) 【3xx - 重新導向】 你:我要招牌菜 服務生:招牌菜改名了,現在叫特選牛排(301 Moved Permanently) 服務生:今天招牌菜換成豬排了(302 Found) 【4xx - 客戶端錯誤】 你:我要一份恐龍肉 服務生:我們沒有這道菜(404 Not Found) 你:我要一杯酒 服務生:您未滿 18 歲,無法提供(403 Forbidden) 你:(亂吼) 服務生:聽不懂您說什麼(400 Bad Request) 【5xx - 伺服器錯誤】 你:我要一份牛排 服務生:廚房壞了(500 Internal Server Error) 服務生:廚師請假,暫停營業(503 Service Unavailable) 📊 HTTP 狀態碼分類 五大類 1xx - 資訊性回應(Informational) ├─ 請求已收到,繼續處理 └─ 較少使用 2xx - 成功(Success) ├─ 請求成功處理 └─ 最常見的是 200 OK 3xx - 重新導向(Redirection) ├─ 需要進一步操作 └─ 瀏覽器會自動處理 4xx - 客戶端錯誤(Client Error) ├─ 請求有錯誤 ├─ 客戶端的問題 └─ 最常見的是 404 Not Found 5xx - 伺服器錯誤(Server Error) ├─ 伺服器處理失敗 ├─ 伺服器的問題 └─ 最常見的是 500 Internal Server Error 1️⃣ 1xx - 資訊性回應 100 Continue 說明: - 客戶端可以繼續發送請求 - 伺服器已收到請求的初始部分 使用場景: - 上傳大檔案時 - 客戶端先發送 Expect: 100-continue 標頭 - 伺服器確認可以接收後回傳 100 範例: 【客戶端】 POST /upload HTTP/1.
02-5. HTTP Headers 詳解 ⏱️ 閱讀時間: 12 分鐘 🎯 難度: ⭐⭐ (簡單)
🎯 本篇重點 深入理解 HTTP Headers 的分類、常用 Headers 的用途、安全相關 Headers,以及如何在實際開發中正確使用。
🤔 什麼是 HTTP Headers? HTTP Headers = HTTP 請求和回應的「元資料」
一句話解釋: HTTP Headers 就像是包裹上的標籤,告訴對方關於這個包裹的重要資訊(內容類型、大小、來源、目的地等)。
📦 用快遞包裹來比喻 Headers 包裹標籤(Headers) HTTP Headers 寄件人 User-Agent(客戶端資訊) 收件人 Host(目標伺服器) 包裹內容類型 Content-Type(內容類型) 包裹重量 Content-Length(內容大小) 寄送方式 Connection(連線方式) 到期日 Expires(過期時間) 特殊處理說明 Cache-Control(快取控制) 簽名證明 Authorization(認證資訊) 📋 Headers 的分類 四大類 1. 通用標頭(General Headers) ├─ 請求和回應都可以使用 ├─ Connection ├─ Date └─ Cache-Control 2.
03-1. HTTPS 是什麼? ⏱️ 閱讀時間: 10 分鐘 🎯 難度: ⭐⭐ (簡單)
🎯 本篇重點 理解 HTTPS 的基本概念、HTTP 和 HTTPS 的差異、為什麼需要 HTTPS,以及 HTTPS 如何保護我們的資料安全。
🤔 什麼是 HTTPS? HTTPS (HTTP Secure) = 安全的 HTTP
一句話解釋: HTTPS 就像是在 HTTP 外面包了一層「防彈裝甲」,所有傳輸的資料都經過加密,別人偷看也看不懂。
HTTP = 明信片(任何人都能看到內容) HTTPS = 密封信件(只有收件人能看到內容) 📮 用寄信來比喻 HTTP vs HTTPS HTTP = 明信片 你寫一張明信片寄給朋友: 內容: 「親愛的小明, 我的銀行帳號是 123456789 密碼是 password123」 問題: ├─ 郵差可以看到內容 👁️ ├─ 郵局人員可以看到內容 👁️ ├─ 中途任何人都能看到 👁️ └─ 有人可能修改內容 ✏️ 結果: 你的帳號密碼可能被盜! HTTPS = 密封信件(加密) 你把信放進信封,用特殊的鎖封起來: 外觀: 一個密封的信封 📩 只有收件人有鑰匙 🔑 過程: 1.
03-2. SSL/TLS 加密原理 ⏱️ 閱讀時間: 15 分鐘 🎯 難度: ⭐⭐⭐ (中等)
🎯 本篇重點 深入理解 SSL/TLS 的加密原理、對稱加密與非對稱加密的差異、混合加密系統的運作方式,以及常見的加密演算法。
🤔 什麼是 SSL/TLS? SSL (Secure Sockets Layer) = 安全通訊層協定(已棄用) TLS (Transport Layer Security) = 傳輸層安全協定(現代標準)
一句話解釋: SSL/TLS 就像是在網路通訊中加上一個「密碼鎖」和「簽名」,確保只有對的人能看到內容,且內容沒被改過。
📜 SSL/TLS 的歷史演進 SSL 時代(Netscape 開發): ├─ SSL 1.0(1994)- 從未發布(有嚴重漏洞) ├─ SSL 2.0(1995)- 已棄用(2011) └─ SSL 3.0(1996)- 已棄用(2015,POODLE 漏洞) TLS 時代(IETF 標準化): ├─ TLS 1.0(1999)- 已棄用(2021) ├─ TLS 1.1(2006)- 已棄用(2021) ├─ TLS 1.2(2008)- ✅ 目前廣泛使用 └─ TLS 1.