以下是 HTTP 協議中常見的錯誤狀態碼及其原因的總結,按錯誤類型分類整理:
4xx 客戶端錯誤
400 Bad Request
- 原因:請求格式錯誤,服務器無法解析。
- 常見場景:
- 請求頭或請求體語法錯誤(如 JSON/XML 格式錯誤)。
- 缺少必要參數或參數類型不匹配。
401 Unauthorized
- 原因:請求未通過身份驗證。
- 常見場景:
- 未提供身份憑證(如 Token、Cookie)。
- 提供的憑證已過期或無效。
403 Forbidden
- 原因:服務器拒絕執行請求,即使客戶端已認證。
- 常見場景:
- 用戶權限不足(如訪問其他用戶的私有資源)。
- IP 地址或設備被限制訪問。
404 Not Found
- 原因:請求的資源在服務器上不存在。
- 常見場景:
- URL 路徑錯誤(如拼寫錯誤)。
- 資源已被刪除或未正確部署。
405 Method Not Allowed
- 原因:請求方法(GET/POST/PUT 等)對目標資源不適用。
- 示例:對只支持 GET 的接口發送 POST 請求。
408 Request Timeout
- 原因:服務器等待請求超時。
- 常見場景:客戶端發送請求過慢,或網絡延遲過高。
429 Too Many Requests
- 原因:客戶端發送的請求頻率超過限制。
- 常見場景:短時間內頻繁調用 API,觸發服務器的限流策略。
5xx 服務器端錯誤
500 Internal Server Error
- 原因:服務器內部發生未預期的錯誤。
- 常見場景:
- 代碼邏輯錯誤(如空指針異常)。
- 數據庫連接失敗。
501 Not Implemented
- 原因:服務器不支持請求的功能。
- 示例:請求了一個服務器未實現的 HTTP 方法。
502 Bad Gateway
- 原因:作為代理或網關的服務器從上游服務器收到無效響應。
- 常見場景:
- 反向代理服務器無法連接后端服務。
- 上游服務器崩潰或配置錯誤。
503 Service Unavailable
- 原因:服務器暫時無法處理請求(通常因過載或維護)。
- 常見場景:
- 服務器維護或重啟。
- 突發的高并發請求導致資源耗盡。
504 Gateway Timeout
- 原因:代理或網關服務器未及時收到上游服務器的響應。
- 常見場景:后端服務處理時間過長,超過網關的等待時間。
505 HTTP Version Not Supported
- 原因:服務器不支持請求使用的 HTTP 協議版本。
- 示例:客戶端使用 HTTP/3,但服務器僅支持 HTTP/1.1。
通用排查建議
-
客戶端錯誤(4xx):
- 檢查請求的 URL、參數、請求方法、請求頭是否符合 API 文檔。
- 驗證身份憑證是否有效(如 Token 是否過期)。
- 通過瀏覽器開發者工具或抓包工具(如 Fiddler)分析原始請求。
-
服務端錯誤(5xx):
- 查看服務器日志(如 Nginx/應用日志)定位具體錯誤堆棧。
- 檢查服務器資源使用情況(CPU、內存、磁盤)。
- 確認上游服務(如數據庫、第三方 API)是否正常運行。
通過狀態碼可快速定位問題方向,但具體原因需結合服務器日志和請求上下文進一步分析。