狀態(tài)碼
狀態(tài)碼的職責是當客戶端向服務器端發(fā)送請求時,描述返回的請求果豌蟋。借助狀態(tài)碼廊散,用戶可以知道服務器端是正常處理了請求,還是出現了錯誤梧疲。
狀態(tài)碼的類別
分類 | 類別 | 原因 |
---|---|---|
1XX | Informational(信息性狀態(tài)碼) | 接收的請求正在處理 |
2XX | Success(成功狀態(tài)碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態(tài)碼) | 需要進行附加操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態(tài)碼) | 服務器無法處理請求 |
5XX | Server Error(服務器錯誤狀態(tài)碼) | 服務器處理請求出錯 |
200 OK
表示從客戶端發(fā)來的請求在服務器端被正常處理了允睹。
在響應報文內,隨狀態(tài)碼一起返回的信息會因方法的不同而發(fā)生改變幌氮。比如缭受,使用 GET 方法時,對應請求資源的實體會作為響應返回该互;而使用 HEAD 方法時米者,對應請求資源的實體首部不隨報文主體作為響應返回(即在響應中只返回首部,不會返回實體的主體部分)。
204 No Content
該狀態(tài)碼代表服務器接收的請求已成功處理蔓搞,但在返回的響應報文中不含實體的主體部分胰丁。另外,也不允許返回任何實體的主體喂分。比如锦庸,當從瀏覽器發(fā)出請求處理后,返回 204 響應蒲祈,那么瀏覽器顯示的頁面不發(fā)生更新甘萧。
一般在只需要從客戶端往服務器發(fā)送信息,而對客戶端不需要發(fā)送新信息內容的情況下使用梆掸。
206 Partial Content
該狀態(tài)碼表示客戶端進行了范圍請求幔嗦,而服務器成功執(zhí)行了這部分的GET 請求。響應報文中包含由 Content-Range 指定范圍的實體內容沥潭。
3XX 重定向
3XX 響應結果表明瀏覽器需要執(zhí)行某些特殊的處理以正確處理請求邀泉。
301 Moved Permanently
永久性重定向。該狀態(tài)碼表示請求的資源已被分配了新的 URI钝鸽,以后應使用資源現在所指的 URI汇恤。也就是說,如果已經把資源對應的 URI保存為書簽了拔恰,這時應該按 Location 首部字段提示的 URI 重新保存因谎。
當指定資源路徑的最后忘記添加斜杠“/”,就會產生 301 狀態(tài)碼颜懊。
302 Found
臨時性重定向财岔。該狀態(tài)碼表示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問河爹。和 301 Moved Permanently 狀態(tài)碼相似匠璧,但 302 狀態(tài)碼代表的資源不是被永久移動,只是臨時性質的咸这。換句話說夷恍,已移動的資源對應的URI 將來還有可能發(fā)生改變。比如媳维,用戶把 URI 保存成書簽酿雪,但不會像 301 狀態(tài)碼出現時那樣去更新書簽,而是仍舊保留返回 302 狀態(tài)碼的頁面對應的 URI侄刽。
303 See Other
該狀態(tài)碼表示由于請求對應的資源存在著另一個 URI指黎,應使用 GET方法定向獲取請求的資源。
303 狀態(tài)碼和 302 Found 狀態(tài)碼有著相同的功能州丹,但 303 狀態(tài)碼明確表示客戶端應當采用 GET 方法獲取資源醋安,這點與 302 狀態(tài)碼有區(qū)別。
比如,當使用 POST 方法訪問 CGI 程序茬故,其執(zhí)行后的處理結果是希望客戶端能以 GET 方法重定向到另一個 URI 上去時盖灸,返回 303 狀態(tài)碼蚁鳖。雖然 302 Found 狀態(tài)碼也可以實現相同的功能磺芭,但這里使用 303狀態(tài)碼是最理想的。
304 Not Modified
該狀態(tài)碼表示客戶端發(fā)送附帶條件的請求 2 時醉箕,服務器端允許請求訪問資源钾腺,但未滿足條件的情況。304 狀態(tài)碼返回時讥裤,不包含任何響應的主體部分放棒。304 雖然被劃分在 3XX 類別中,但是和重定向沒有關系己英。
附帶條件的請求是指采用 GET 方法的請求報文中包含 If-Match间螟,If-Modified-Since,If-None-Match损肛,If-Range厢破,If-Unmodified-Since 中任一首部。
307 Temporary Redirect
臨時重定向治拿。該狀態(tài)碼與 302 Found 有著相同的含義摩泪。盡管 302 標準禁止 POST 變換成 GET,但實際使用時大家并不遵守劫谅。307 會遵照瀏覽器標準见坑,不會從 POST 變成 GET。但是捏检,對于處理響應時的行為荞驴,每種瀏覽器有可能出現不同的情況。
4XX 客戶端錯誤
4XX 的響應結果表明發(fā)生錯誤的原因是客戶端贯城。
400 Bad Request
該狀態(tài)碼表示請求報文中存在語法錯誤戴尸。當錯誤發(fā)生時,需修改請求的內容后再次發(fā)送請求冤狡。另外孙蒙,瀏覽器會像 200 OK 一樣對待該狀態(tài)碼。
401 Unauthorized
該狀態(tài)碼表示發(fā)送的請求需要有通過 HTTP 認證(BASIC 認證悲雳、DIGEST 認證)的認證信息挎峦。另外若之前已進行過 1 次請求,則表示用戶認證失敗合瓢。
返回含有 401 的響應必須包含一個適用于被請求資源的 WWWAuthenticate首部用以質詢(challenge)用戶信息坦胶。當瀏覽器初次接收到401響應,會彈出認證用的對話窗口。
403 Forbidden
該狀態(tài)碼表明對請求資源的訪問被服務器拒絕了顿苇。服務器端沒有必要給出拒絕的詳細理由峭咒,但如果想作說明的話,可以在實體的主體部分對原因進行描述纪岁,這樣就能讓用戶看到了凑队。
未獲得文件系統的訪問授權,訪問權限出現某些問題(從未授權的發(fā)送源 IP 地址試圖訪問)等列舉的情況都可能是發(fā)生 403 的原因幔翰。
404 Not Found
該狀態(tài)碼表明服務器上無法找到請求的資源漩氨。除此之外,也可以在服務器端拒絕請求且不想說明理由時使用遗增。
5XX 服務器錯誤
5XX 的響應結果表明服務器本身發(fā)生錯誤叫惊。
500 Internal Server Error
該狀態(tài)碼表明服務器端在執(zhí)行請求時發(fā)生了錯誤。也有可能是 Web應用存在的 bug 或某些臨時的故障做修。
503 Service Unavailable
該狀態(tài)碼表明服務器暫時處于超負載或正在進行停機維護霍狰,現在無法處理請求。如果事先得知解除以上狀況需要的時間饰及,最好寫入RetryAfter 首部字段再返回給客戶端蔗坯。