HTTP 狀態碼
依編號或名稱搜尋,了解每個代碼的意義與使用時機。
- 在您的瀏覽器中執行 — 您的文字絕不會傳送到任何地方
- 免註冊、無額度限制,可隨您高興使用多少次
運作方式
多數狀態碼一看就懂,但有少數確實令人困惑,尤其是那些聽起來很像的。輸入數字、forbidden 這類字詞,或 4xx 就能看到整個類別。
401 與 403,人人都會搞混的一對
401 Unauthorized 其實是指未通過驗證:伺服器不知道您是誰,送出憑證或許就能解決。403 Forbidden 則是伺服器清楚知道您是誰,但您仍然不被允許。這兩個名稱是歷史遺留、而且沒有幫助;這個區別很重要,因為前者會引導登入,後者則不會。
301 與 302,以及它為何影響 SEO
301 是永久性的,會把排名訊號轉移到新位址;302 是暫時性的,會把訊號留在原位址。把 302 用在永久移轉上是常見而且代價不明顯卻很高的錯誤。307 與 308 是現代的對應版本,另外保證不會更改方法,也就是 POST 仍是 POST,而 301 與 302 在歷史上並不保證這點。
驗證用 422
400 Bad Request 表示伺服器完全無法理解該請求。422 Unprocessable Content 表示伺服器完全看得懂,但內容有誤,例如缺少欄位或電子郵件無效。多數 API 在驗證失敗時應該傳回 422,卻習慣性地傳回 400。
各類別
1xx 為資訊類、2xx 為成功、3xx 為重新導向、4xx 是用戶端的錯、5xx 是伺服器的錯。事故發生時要釐清責任歸屬,就看這最後一項區分:4xx 暴增表示呼叫端做錯了事,5xx 暴增則表示出錯的是您。
418
I'm a teapot(我是茶壺)源自 1998 年的愚人節玩笑,後來有人試圖把它從各實作中移除而引起強烈抗議,最終被正式標準化。它不是為了實際使用,卻確實是規格的一部分。
HTTP 狀態碼常見問題
401 與 403 有什麼差別?
401 表示未通過驗證,也就是伺服器不知道您是誰。403 表示伺服器知道您是誰,但您仍然不被允許。
該用 301 還是 302?
永久移轉用 301,會轉移排名;暫時移轉用 302。若 HTTP 方法不可改變,請使用 308 與 307。
驗證錯誤該傳回什麼代碼?
422 Unprocessable Content。400 則表示完全無法理解該請求。
418 是真的嗎?
是的。它起源於 1998 年的愚人節玩笑,並且確實已被標準化,但不是為了實際使用。
502 是什麼意思?
代理伺服器從其後方的伺服器收到無效的回應,通常是應用程式已停止運作或不斷當機。