深入理解 HTTP 狀態碼 —— 前端后端必備知識


📚深入理解 HTTP 狀態碼 —— 前端后端必備知識

作者:lvzi
日期:2025 年 6 月 22 日
標簽:HTTP、前端、后端、狀態碼、Web基礎


💡引言

在 Web 開發過程中,我們經常會遇到形如 200 OK404 Not Found500 Internal Server Error 這樣的術語,它們是 HTTP 狀態碼(HTTP Status Code)。這些狀態碼是 Web 客戶端(如瀏覽器)和服務器之間交流的“語言”,是判斷請求是否成功的最直接方式。

那么,HTTP 狀態碼究竟有哪些?它們代表了什么?又該如何合理使用?本文將從原理、分類、常見狀態碼及應用場景出發,詳細講解 HTTP 狀態碼的精髓。


📖一、什么是 HTTP 狀態碼?

HTTP 狀態碼是服務器響應 HTTP 請求時返回的一個 三位數字代碼,它表示服務器對請求的處理結果。

狀態碼的格式:

HTTP/1.1 200 OK
  • 200 是狀態碼
  • OK 是對應的英文短語(Reason Phrase)

雖然英文短語可以變化,但數字代碼是規范化的,具有明確含義。


📦二、HTTP 狀態碼的五大類

HTTP 狀態碼根據首位數字(百位)劃分為 5 類:

分類范圍含義
1xx100-199信息性,表示請求已接收,繼續處理
2xx200-299成功,表示請求成功被處理
3xx300-399重定向,需要進一步操作
4xx400-499客戶端錯誤,請求有誤
5xx500-599服務器錯誤,服務器未能處理請求

?三、常見狀態碼詳解(分類講解)


🔹1xx 信息性狀態碼(少用)

狀態碼含義
100 Continue請求初步 OK,客戶端應繼續發送請求主體
101 Switching Protocols服務器同意更改協議(如從 HTTP 切換到 WebSocket)
102 Processing (WebDAV)服務器接收到并正在處理請求

? 通常由客戶端和服務器在低層協議協商使用,一般瀏覽器不處理。


🟢2xx 成功狀態碼(最常見)

狀態碼含義
200 OK請求成功,返回數據(最常見)
201 Created請求成功,并在服務器上創建了新資源(如 POST)
202 Accepted請求已接收但尚未處理(常用于異步)
204 No Content請求成功,但服務器沒有返回內容
206 Partial Content只返回了部分資源(斷點續傳場景)

? 一般前端判斷接口是否成功,常以 200 為基準。


🔁3xx 重定向狀態碼

狀態碼含義
301 Moved Permanently永久重定向,請求的資源已被永久移動
302 Found臨時重定向,資源暫時位置改變
303 See Other重定向到另一個 URI(用于 POST 后跳轉)
304 Not Modified緩存命中,客戶端可使用本地緩存
307 Temporary Redirect臨時重定向,但保留原請求方式
308 Permanent Redirect類似 301,但也保留原請求方式

? 瀏覽器遇到 3xx,會自動跳轉;開發中常用于 SEO 或資源遷移。


?4xx 客戶端錯誤狀態碼

狀態碼含義
400 Bad Request請求格式錯誤,服務器無法理解
401 Unauthorized未認證(需要登錄)
403 Forbidden已認證,但無權限訪問資源
404 Not Found請求資源不存在(訪問了錯誤鏈接)
405 Method Not Allowed請求方法不允許(如用 GET 調用只能 POST 的接口)
408 Request Timeout請求超時(客戶端等待太久)
429 Too Many Requests客戶端請求太多,被限流

? 前端遇到 401/403,通常會跳轉登錄頁或展示權限錯誤;404 是網頁最常見錯誤之一。


🔥5xx 服務器錯誤狀態碼

狀態碼含義
500 Internal Server Error服務器內部錯誤,無法完成請求
501 Not Implemented服務器不支持當前請求方法
502 Bad Gateway網關或代理服務器收到無效響應(下游服務器錯誤)
503 Service Unavailable服務器暫時無法處理請求(宕機、過載)
504 Gateway Timeout網關超時(上游服務器無響應)

? 這些狀態碼多用于排查后端服務或網關故障,是系統監控報警的關鍵依據。


📘四、開發實戰中的 HTTP 狀態碼使用建議

場景建議使用的狀態碼
請求成功并返回數據200 OK
提交表單創建資源201 Created
登錄失敗401 Unauthorized
用戶無訪問權限403 Forbidden
用戶訪問不存在的頁面404 Not Found
接口參數錯誤400 Bad Request
后臺服務異常500 Internal Server Error
請求被限流429 Too Many Requests

🚨五、狀態碼≠業務狀態!

HTTP 狀態碼只代表協議層狀態,不代表業務成功。

? 舉個例子:

HTTP 200 OK
{"code": 40001,"message": "登錄失敗,密碼錯誤"
}
  • 雖然是 200 OK,但業務上是登錄失敗。
  • 所以前后端應約定好:HTTP 狀態碼表示網絡是否正常,業務狀態碼表示業務是否成功。

🧠六、如何自定義狀態碼?

實際上,你不應該“自定義” HTTP 狀態碼(只能使用標準定義),但你可以:

  • 使用標準 HTTP 狀態碼
  • 在返回的 JSON 中自定義業務錯誤碼,例如:
{"code": 10002,"message": "用戶未注冊"
}

這樣可以在統一的 200 OK 下做細致的業務判斷。


🧭七、總結:一張表速查 HTTP 狀態碼

類別范圍含義示例
1xx100–199信息響應100 Continue
2xx200–299成功200 OK, 201 Created
3xx300–399重定向301 Moved Permanently, 302 Found
4xx400–499客戶端錯誤400 Bad Request, 404 Not Found
5xx500–599服務器錯誤500 Internal Server Error, 503 Service Unavailable

📌寫在最后–一些狀態碼可能出現的場景


當然可以,下面我們來具體深入講解 HTTP 狀態碼中的 500502504400,這些是開發、運維、測試中最常見的幾個錯誤狀態碼,理解它們的本質、觸發場景和排查方向非常重要。


🔥500 Internal Server Error(服務器內部錯誤)

📌定義:

服務器遇到意外情況,無法完成請求。

📂本質:

這不是客戶端的問題,而是服務器處理請求時出現了未捕獲的異常或錯誤

🔧常見觸發場景:

場景示例
后端代碼異常Java 的空指針、Python 的除零錯誤等
數據庫錯誤SQL 語法錯誤、連接池耗盡等
第三方服務掛了請求第三方接口失敗卻沒有處理異常
配置錯誤缺少依賴、文件權限問題等
模板渲染錯誤頁面渲染時字段不存在等

🧰排查建議:

  • 查看后端日志(如 error.logstdout.log
  • 檢查異常棧(Stack Trace)
  • 開發階段建議設置統一異常處理器(如 Spring 的 @ControllerAdvice

🌐502 Bad Gateway(網關錯誤)

📌定義:

服務器作為網關或代理時,從上游服務器收到了無效響應。

📂本質:

中間層(如 Nginx、API 網關)向后端服務發起請求,但后端響應異常或根本沒響應

🔧常見觸發場景:

場景示例
Nginx 連接不到后端后端掛了、端口錯了、服務名拼錯了
后端返回非法 HTTP 報文格式不對、header 編碼錯誤等
上游服務超時斷開后端執行時間過長,導致網關斷鏈
HTTPS 證書問題代理 HTTPS 請求失敗

🧰排查建議:

  • 查看 Nginx/網關日志
  • 檢查后端是否可用(重啟、健康檢查)
  • 是否連接的是正確服務地址
  • 后端是否有響應(即使報錯,也要返回合法 HTTP 報文)

??504 Gateway Timeout(網關超時)

📌定義:

服務器作為網關或代理時,未能及時從上游服務器獲取響應。

📂本質:

中間層請求上游服務,上游服務處理太慢,超過了網關設置的超時時間。

🔧常見觸發場景:

場景示例
后端處理邏輯耗時太久大量計算、等待數據庫慢查詢
死循環、阻塞等代碼問題后端代碼邏輯卡死了
后端服務響應慢、未優化比如查詢 100W 條數據不加索引
網關設置超時時間太短默認 60s,但接口處理可能要 90s

🧰排查建議:

  • 檢查接口處理邏輯是否過慢(數據庫慢查詢日志、代碼性能瓶頸)
  • 增加網關超時時間(Nginx 示例:proxy_read_timeout 120;
  • 用 Postman/JMeter 等工具測試接口響應時間

?400 Bad Request(錯誤請求)

📌定義:

客戶端發送的請求有語法錯誤,服務器無法理解。

📂本質:

請求根本不合法,服務器連處理都沒法處理,和權限無關。

🔧常見觸發場景:

場景示例
請求參數缺失或格式錯誤JSON 語法錯誤,字段類型不對
請求體為空但必須有POST 接口必須傳 body,結果為空
Content-Type 不對要求 application/json 卻傳了 text/plain
URL 太長或編碼錯誤GET 請求參數過多或包含非法字符
服務端驗證失敗(部分實現方式)字段校驗失敗直接返回 400

🧰排查建議:

  • 確認前端傳參是否正確(URL、Body、Header)
  • 檢查接口文檔參數類型要求
  • 后端需返回清晰錯誤信息(比如 {"error": "字段 age 必須是整數"}

🧠總結對比表

狀態碼分類含義常見觸發者排查方向
400客戶端錯誤請求格式錯誤前端/客戶端參數格式、類型、Header、請求體
500服務器錯誤服務代碼拋異常后端查看代碼、異常棧、日志
502服務器錯誤網關接收無效響應網關 → 后端檢查網關連接、后端可用性
504服務器錯誤網關請求超時網關 ← 后端接口耗時、性能瓶頸、超時配置

?開發中如何處理這些狀態碼?

  • 后端應該:

    • 設置全局異常處理器,將 500 替換為自定義錯誤
    • 對參數進行校驗,合理返回 400
    • 對超時接口拆分/優化,避免 504
  • 前端應該:

    • 判斷狀態碼,給出清晰提示
    • 遇到 400:提醒用戶填寫問題
    • 遇到 500/502/504:提示“服務器出錯,請稍后重試”

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910397.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910397.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910397.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python商務數據分析——Python 入門基礎知識學習筆記

一、簡介 1.1 Python 特性 解釋型語言:代碼無需編譯可直接運行,適合快速開發。 動態類型:變量類型在運行時確定(如x1后x"str"仍合法)。 面向對象:支持類、對象、繼承等特性,代碼可…

IT小白到高手:HCIA、HCIP、HCIE認證攻略

大家好,這里是G-LAB IT實驗室。6月22日,周日!HCIA+CCNA開新班啦! 01 華為HCIA、HCIP、HCIE有必要考證嗎 在如今競爭激烈的IT行業,華為的認證體系已成為眾多網絡工程師的重要參考。…

【IndexDB】前端IndexedDB終極指南

前端 IndexedDB 詳細教程 IndexedDB 是一個瀏覽器內置的 NoSQL 數據庫系統,允許在客戶端存儲大量結構化數據,并支持高性能搜索。相比 localStorage,IndexedDB 更適合存儲大量數據并提供更復雜的查詢功能。 基本概念 數據庫:每個…

擴散模型與強化學習(1):字節Seedance中的人類偏好優化實踐

擴散模型與強化學習(0):專欄匯總與導航 前言:最近強化學習在Diffusion Models得到了越來越多廣泛的應用,本專欄將系統性地介紹當前Diffusion Models中實用且前沿的技術進展。這篇博客介紹字節最新的視頻生成模型Seedance 1.0: Exploring the …

【內存】Linux 內核優化實戰 - vm.max_map_count

目錄 vm.max_map_count參數全面解析一、參數定義與核心作用二、默認值與關鍵調整場景1. 默認限制與不足場景2. 典型報錯案例 三、操作指南:查看與修改方法四、場景化建議值與配置示例五、關鍵注意事項六、延伸知識:內存映射的底層邏輯 vm.max_map_count參…

組件之間的雙向綁定:v-model

🤍 前端開發工程師、技術日更博主、已過CET6 🍨 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 🕠 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 🍚 藍橋云課簽約作者、…

GetX 實現 MVVM 架構, 高效 路由管理 和 狀態管理

GetX是Flutter中的一個高效的狀態管理與路由管理框架,結合MVVM架構能簡化代碼邏輯。以下是使用GetX實現MVVM架構,并完成路由和狀態管理的核心思路與實踐: 一、MVVM架構在GetX中的映射 MVVM(Model-View-ViewModel)與G…

Qt項目,記事本

一、項目說明 項目功能: (1)打開文件:點擊打開文件按鈕彈出對話框,選擇文本文件后,在主窗口編輯界面顯示內容。 (2)關閉文件:關閉打開的文件,并詢問是否保存…

【全開源】填表問卷統計預約打卡表單系統+uniapp前端

一.系統介紹 填表問卷統計預約打卡表單系統是ThinkPHPUniApp開發的一款集信息填表、預約報名,簽到打卡、活動通知、報名投票、班級統計等功能的自定義表單統計小程序。 二.搭建環境 系統環境:CentOS、 運行環境:寶塔 Linux 網站環境&…

開源 python 應用 開發(一)python、pip、pyAutogui、python opencv安裝

最近有個項目需要做視覺自動化處理的工具,最后選用的軟件為python,剛好這個機會進行系統學習。短時間學習,需要快速開發,所以記錄要點步驟,防止忘記。 鏈接: 開源 python 應用 開發(一&#x…

SpringCloud + Zookeeper + Feign整合及Feign原理

知其然 SpringCloud Zookeeper Spring Cloud 與 Zookeeper的整合只需要添加相關的starter依賴和增加相關注解即可完成。 pom.xml 如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.…

深入探索 OpenCV 圖像識別:從基礎到深度學習

在當今數字化時代&#xff0c;圖像識別技術已經滲透到我們生活的方方面面&#xff0c;從智能手機中的拍照翻譯功能到自動駕駛汽車的目標檢測系統&#xff0c;圖像識別的應用無處不在。作為一名算法工程師&#xff0c;我有幸深入研究并實踐了 OpenCV 在圖像識別領域的強大功能。…

Hadoop部署(HA)高可用集群

一、準備工作 1.把集群全部停掉 在三臺節點上都做&#xff08;在xshell通過右鍵----> 發送輸入到--->所有會話&#xff09; 2..在/export/servers下創建HA目錄 sudo mkdir -p /export/servers/HA 3.創建用戶和設置所屬主和所屬組 #創建用戶 sudo adduser ygre #設置…

STM32 CAN位同步、錯誤處理

一、接收方數據采樣 CAN總線沒有時鐘線&#xff0c;總線上的所有設備通過約定波特率的方式確定每一個數據位的時長發送方以約定的位時長每隔固定時間輸出一個數據位接收方以約定的位時長每隔固定時間采樣總線的電平&#xff0c;輸入一個數據位理想狀態下&#xff0c;接收方能依…

django serializer __all__中 額外添加外鍵里的某一個屬性

在Django中使用序列化器&#xff08;Serializer&#xff09;時&#xff0c;你可能會遇到需要將模型&#xff08;Model&#xff09;中的外鍵字段轉換成其關聯對象的一部分屬性的情況。默認情況下&#xff0c;序列化器會自動序列化外鍵字段&#xff0c;但如果你想要在序列化結果中…

Redis快的原因

Redis 高性能的核心原因 Redis 之所以能達到極高的性能&#xff08;10萬 QPS&#xff09;&#xff0c;主要源于以下幾個關鍵設計&#xff1a; 1. 純內存操作 核心優勢&#xff1a;所有數據存儲在內存中&#xff0c;避免了磁盤 I/O 瓶頸 內存訪問速度比磁盤快 10萬倍以上&am…

【大模型微調】6.模型微調實測與格式轉換導出

引言 本文繼續研究 LLaMA-Factory 微調數據的流程&#xff0c;側重于微調結果與模型導出。 數據集準備 首先參考 LLaMA-Factory 核心開發者的文章[1]&#xff0c;下載用于微調的公開的商品文案數據集 AdvertiseGen。 下載地址&#xff1a;https%3A//cloud.tsinghua.edu.cn/…

3085. 成為 K 特殊字符串需要刪除的最少字符數

3085. 成為 K 特殊字符串需要刪除的最少字符數 給你一個字符串 word 和一個整數 k。 如果 |freq(word[i]) - freq(word[j])| < k 對于字符串中所有下標 i 和 j 都成立&#xff0c;則認為 word 是 k 特殊字符串。 此處&#xff0c;freq(x) 表示字符 x 在 word 中的出現頻…

分布式系統中的 Kafka:流量削峰與異步解耦(二)

Kafka 在分布式系統中的應用案例 電商訂單系統 在電商領域&#xff0c;訂單系統是核心業務模塊之一&#xff0c;涉及多個復雜的業務環節和系統組件之間的交互。以常見的電商購物流程為例&#xff0c;當用戶在電商平臺上下單后&#xff0c;訂單創建服務會首先接收到用戶的訂單…

從事登高架設作業需要注意哪些安全事項?

從事登高架設作業&#xff08;如腳手架搭設、高空維修、外墻清洗等&#xff09;屬于高風險特種作業&#xff0c;必須嚴格遵守安全規范。以下是關鍵安全注意事項&#xff0c;涵蓋作業前準備、作業中操作、應急處理三大環節&#xff0c;符合國家《高處作業安全技術規范》&#xf…