1. 程式人生 > >HTTP請求返回狀態碼整理

HTTP請求返回狀態碼整理

狀態碼的類別

這裡寫圖片描述

一、2XX成功

1. 200 OK

表示從客戶端發來的請求在伺服器被正常處理了。

2. 204 no content

表示從客戶端發來的請求在伺服器被正常處理了,但在返回的響應報文中不含實體的主體部分。

3. 206 partial content

表示客戶端進行了範圍請求,而伺服器成功執行了這部分的GET請求。

二、3XX重定向

1. 301 moved permanently

永久性重定向。該狀態碼錶示請求的資源已被分配了新的URI,以後應使用資源現在所指的URI。也就是說,如果已經把資源對應的URI儲存為書籤了,這時應按Location首部欄位提示的URI重新儲存。

如下方給出的請求URI,當指定資源路徑的最後忘記新增斜槓“/”,就會產生301狀態碼
http://example.com/sample
  • 1
  • 2

2. 302 found

臨時性重定向。該狀態碼錶示請求的資源已被分配了新的URI,希望使用者(本次)能使用新的URI訪問。

與301的區別:302代表的資源不是被永久移動,只是臨時性質的,已移動的資源對應的URI將來還有可能發生改變。

如使用者把URI儲存成書籤,但不會像301出現時那樣去更新書籤,而是仍舊保留返回302的頁面對應的URI。
  • 1
  • 2
  • 3

3. 303 see other

該狀態碼錶示由於請求對應的資源存在著另一個URI,應使用GET方法定向獲取請求的資源。

與302的區別:303明確表示客戶端應採用GET方法獲取資源
  • 1

當301、302、303響應狀態碼返回時,幾乎所有的瀏覽器都會把POST改為GET,並刪除請求報文內的主體,之後請求會自動再次傳送。 
301、302標準是禁止將POST改為GET的,但實際使用時大家都會這麼做。

4. 304 not modified

該狀態碼錶示客戶端傳送附帶條件的請求時,伺服器端資源已找到,但未符合條件請求。304返回時,不包含任何響應的主體部分。

304雖然被劃分在3XX類別中,但是和重定向沒有關係。

5. 307 temporary rediect

臨時重定向。該狀態碼與302有著相同的含義,但307會遵照瀏覽器標準,不會從POST變成GET。對於處理響應時的行為,每種瀏覽器有可能出現不同的情況。

三、4XX客戶端錯誤

1. 400 bad request

該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次傳送請求。

2. 401 unauthorized

該狀態碼錶示傳送的請求需要有通過HTTP認證(BASIC認證、DIGEST認證)的認證資訊。另外,若之前已進行過1次請求,則表示使用者認證失敗。 
返回含有401的響應必須包含一個適用於被請求資源的WWWAuthenticate首部用以質詢(challenge)使用者資訊。當瀏覽器初次接收到401響應,會彈出認證用的對話視窗。

3. 403 forbidden

該狀態碼錶明對請求資源的訪問被伺服器拒絕了。

伺服器端沒有必要給出拒絕的詳細理由,但如果想作說明,可在實體的主體部分對原因進行描述,這樣就能讓使用者看到了。

未獲得檔案系統的訪問授權,訪問許可權出現某些問題(從未授權的傳送源IP地址試圖訪問)等列舉的情況都可能是發生了403的原因    
  • 1
  • 2
  • 3

4. 404 not found

該狀態碼錶明伺服器上無法找到請求的資源。除此之外,也可以在伺服器端拒絕請求且不想說明理由時使用。

四、5XX 伺服器錯誤

1. 500 internal server error

該狀態碼錶明伺服器端在執行請求時發生了錯誤。也有可能是Web應用存在的bug或某些臨時的故障。

2. 503 service unavailable

該狀態碼錶明伺服器暫時處於超負載或正在進行停機維護,現在無法處理請求。如果事先得知解除以上狀況需要的時間,最好寫入RetryAfter首部欄位再返回給客戶端。

狀態碼和狀況的不一致

不少返回的狀態碼響應都是錯誤的,但是使用者可能擦覺不到這點。如Web應用程式內部發生錯誤,狀態碼依然返回200 OK,測試的時候就需要注意了。

3. 504 gateway timeout

閘道器超時,由作為代理或閘道器的伺服器使用,表示不能及時地從遠端伺服器獲得應答。