Vibe Coder

HTTP 是什麼?Vibe Coder 一定要懂的網路基礎

HTTP 是瀏覽器和伺服器溝通的共同語言,一次對話分成請求與回應兩部分。看懂六個常用方法、狀態碼與 Header,你才能在 API 出錯時,一眼判斷問題出在哪一層,並精準告訴 AI 該怎麼修。
HTTP 是什麼?Vibe Coder 一定要懂的網路基礎

HTTP 是什麼?Vibe Coder 一定要懂的網路基礎

每次你打開網頁、呼叫一支 API,背後都是 HTTP 在傳遞資料。不管是 OpenAI、Google、Stripe,還是你自己寫的後端,全部都用同一套規則溝通。這一課把 HTTP 拆開來看,讓你不只會用 AI 生程式,出錯的時候也看得懂發生了什麼事。

學會這一課之後,你會發現以前看不懂的錯誤訊息,例如 401、404、CORS 被擋,其實都有固定的排查順序,不用每次都靠猜的。

你將學到什麼

HTTP 是什麼

一次對話分成請求與回應兩部分,搞懂這個架構就懂了所有 API。

六個常用方法

GET、POST、PUT、PATCH、DELETE 各自的用途與適用場景。

狀態碼全覽

2xx 到 5xx 代表什麼問題,看到數字就知道下一步怎麼做。

Header 與 CORS

請求附帶的說明書,以及本機能跑、上線卻被擋的真正原因。

HTTP 是什麼:一次對話,兩個部分

HTTP(HyperText Transfer Protocol)是瀏覽器和伺服器之間溝通的規則。一次 HTTP 對話分成兩個部分:Request(請求)是你或你的程式發送出去的,說「我要什麼」;Response(回應)是伺服器回傳的,說「這是你要的」或「你的請求有問題」。

Request:GET /api/usersResponse:200 OK瀏覽器你的程式伺服器API
一次 HTTP 對話永遠是先送出請求,再收到回應。
HTTP 和 HTTPS 的差別HTTPS 就是 HTTP 加上 TLS 加密,瀏覽器上鎖頭圖示代表 HTTPS,傳輸的資料是加密的。現在所有正式環境都要用 HTTPS,HTTP 只在本機開發時用。

六個常用方法

HTTP 方法告訴伺服器「你想對這個資源做什麼事」。AI 生的程式裡 GET 和 POST 最常出現,但每個方法都有明確的語意,用錯了 API 會直接拒絕。

方法用途有沒有 body常見場景
GET取得資料沒有查詢天氣、取得使用者清單、搜尋
POST新增資料送出表單、新增使用者、上傳檔案
PUT完整更新資料更新整筆使用者資料
PATCH部分更新資料只更新使用者的 email 欄位
DELETE刪除資料通常沒有刪除一筆記錄
OPTIONS查詢支援的方法沒有CORS 預檢請求,瀏覽器自動發送
import requests

# GET:取得資料,參數放 URL
r = requests.get("https://api.example.com/users", params={"page": 1})

# POST:新增資料,資料放 body
r = requests.post("https://api.example.com/users",
    json={"name": "Joan", "email": "j@x.com"})

# DELETE:刪除資料
r = requests.delete("https://api.example.com/users/42")

狀態碼全覽:不同範圍代表不同問題

狀態碼是伺服器告訴你「這次請求的結果」的數字代碼。看狀態碼是排錯的第一步,不同範圍代表不同類型的問題。

範圍意思你要做什麼
2xx成功繼續處理回傳的資料
3xx重導向requests 通常自動處理,不用管
4xx你的請求有問題確認 URL、參數、認證是否正確
5xx伺服器有問題等一下再試,或聯絡 API 提供者
狀態碼意思常見原因解法
200 OK成功正常回應繼續取值
201 Created新增成功POST 成功後常見Body 裡通常有新建立的資源
400 Bad Request請求格式錯參數名稱錯、缺必要欄位、格式不符對照 API 文件確認參數
401 Unauthorized未認證API Key 沒傳、格式錯、已過期確認 Authorization Header 格式
403 Forbidden沒有權限帳號方案不包含此功能確認帳號有此 API 的存取權
404 Not Found找不到URL 打錯、資源不存在確認 URL 路徑
422 Unprocessable資料驗證失敗欄位格式不對,如 email 格式錯看 Response body 的錯誤說明
429 Too Many Requests超過頻率限制免費方案呼叫太頻繁加延遲或升級方案
500 Internal Server Error伺服器炸了對方 API 有 bug等一下再試,查狀態頁

Header:請求附帶的說明書

Header 是 HTTP 請求或回應附帶的元資料,告訴對方這個請求的身份、格式、認證資訊等等。AI 生的程式裡,Header 設定是最常出問題的地方。

常用 Header方向用途範例值
Content-Type請求你傳的資料是什麼格式application/json
Authorization請求你是誰,也就是認證資訊Bearer sk-abc123
Accept請求你希望收到什麼格式application/json
User-Agent請求你用什麼客戶端MyApp/1.0
Access-Control-Allow-Origin回應允許哪些網域存取,也就是 CORS特定網域或萬用字元
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json",
}
r = requests.post(url, headers=headers, json=data)
Authorization Header 的格式不同 API 對 Authorization 格式要求不同。Bearer Token 最常見,格式是 Authorization: Bearer 你的token;Basic Auth 是 Authorization: Basic base64(username:password) ,也有些 API 用自訂 Header,例如 X-API-Key: 你的key。看文件確認格式,格式錯了一定會得到 401。

CORS:為什麼本機可以、上線就被擋

CORS(Cross-Origin Resource Sharing)是瀏覽器的安全機制,防止惡意網站偷偷存取其他網站的 API。只有在瀏覽器端的前端 JS 才會遇到,用 Python 直接呼叫 API 不受影響。

本機開發時,前端和後端通常都在 localhost,或者你直接用 Python 腳本呼叫 API,不經過瀏覽器的跨域限制。部署後前端在你的網站網域,後端在另一個 API 網域,兩個不同的來源,瀏覽器就開始擋了。

Access to fetch at 'https://api.example.com/data'
from origin 'https://yoursite.com' has been blocked
by CORS policy: No 'Access-Control-Allow-Origin' header
is present on the requested resource.

解法是在後端加上 CORS Header,用 FastAPI 的話最常見的做法如下。

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://yoursite.com"],
    allow_methods=["*"],
    allow_headers=["*"],
)
不要在正式環境用萬用字元開放來源把允許來源設成萬用字元,代表任何網域都可以存取你的 API,有安全疑慮。正式環境要明確指定允許的網域。

完整 HTTP 請求解剖

把一次完整的 API 呼叫拆開來看,理解每一個部分的作用。

POST /api/v1/messages HTTP/1.1
Host: api.anthropic.com
Authorization: Bearer sk-ant-abc123
Content-Type: application/json
Accept: application/json

{
  "model": "claude-sonnet-4-5",
  "messages": [{"role": "user", "content": "Hello"}]
}
部分說明
Request Line方法加路徑加協議版本,例如 POST /api/v1/messages HTTP/1.1
Host目標伺服器的網域
Authorization身份驗證資訊,格式要符合 API 要求
Content-Type告訴伺服器 body 的格式是 JSON
空行後的 JSONRequest Body,只有 POST、PUT、PATCH 才有

Vibe Coder 的 HTTP 排錯 SOP

  1. 先看狀態碼:2xx 是成功,4xx 是你的問題要改請求,5xx 是對方的問題,等一下或換方案。
  2. 再看 Response Body:4xx 錯誤通常帶有錯誤說明,複製給 AI 一起分析。
  3. 確認 Header 格式:收到 401 先確認 Authorization Header 格式是否符合文件。
  4. CORS 錯誤一律回後端解決:前端的 CORS 錯誤要去後端加 CORS middleware,不是前端能自己解決的。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

HTTP 和 HTTPS 差在哪裡?
HTTPS 就是 HTTP 加上 TLS 加密,瀏覽器的鎖頭圖示代表資料傳輸是加密的。正式環境一律要用 HTTPS,HTTP 只在本機開發時使用。
收到狀態碼 401 該怎麼辦?
401 代表未認證,通常是沒有正確帶上 Authorization Header,或格式錯誤、已過期。先確認 Header 的格式是否符合該 API 文件的要求。
CORS 錯誤要在前端還是後端解決?
CORS 只會出現在瀏覽器端,錯誤本身要在後端解決,也就是幫 API 加上正確的 CORS Header,前端沒有辦法自己繞過去。
為什麼收到 429 不能一直重試?
429 代表超過呼叫頻率限制,立刻重試只會一直收到同樣的拒絕。正確做法是加上延遲時間或改用更高的方案額度。