HTTP請求方法及響應狀態碼詳解

打瞌睡的布偶貓發表於2021-06-22

HTTP請求方法和響應狀態詳解

HTTP請求方法

HTTP1.0/1.1支援的所有請求方法如下所示:

image-20210622163436411

GET

用來請求訪問已被URI識別的資源。指定的資源經伺服器解析後返回響應內容。

image-20210622163806188

POST

POST方法用來傳輸實體的主體(一般是身份認證資訊資料或者是請求服務的引數資料),雖GET方法也能做到,但一般不用。POST的功能和GET很類似,但POST的主要目的並不是獲取響應的主體內容。

image-20210622164102609

PUT

PUT方法用來傳輸檔案,要求在請求報文的主體中包含檔案內容,然後將檔案儲存請求URI指定的位置。

但是由於PUT方法自身不帶驗證機制,所以為了保障Web網站安全(防止惡意檔案上傳),一般不使用PUT方法。

image-20210622164432672

狀態碼204表明檔案傳輸成功,且沒有資料返回。

DELETE

DELETE用來刪除檔案,是與PUT方法完全相反的方法,使用DELETE方法可以按照請求URI刪除指定的資源。同樣,DELETE方法本身也不帶驗證機制,一般Web網站都不會使用DELETE方法。

HEAD方法和GET方法一樣,只是不返回響應報文的主體部分,一般用來確認URI的有效性以及資源更新的日期時間

image-20210622164703616

上述例子通過HEAD方法請求響應得到響應報文的首部,根據首部就可以確認請求URI是否有效以及請求資源的更新時間。

Options

OPTIONS方法用來查詢針對請求URI指定資源支援的請求方法。

image-20210622165241408

上述例子表明請求URI指定資源支援的請求方法有GET、POST、HEAD、OPTIONS。

HTTP響應狀態碼

響應狀態碼的職責在於告知客戶端請求的處理結果。

image-20210622170923856

五類響應狀態碼

在三位的響應狀態碼中,第一位代表了相應的類別,後兩位無任何含義,只是狀態碼的代號。

image-20210622170957786

在上述五類響應狀態碼中,著重關注成功狀態碼(2XX)、客戶端錯誤狀態碼(4XX)以及伺服器錯誤狀態碼(5XX)。

200 OK

表示請求被正常處理。而根據不同請求方法,得到的響應報文中的響應實體資訊也不同。

image-20210622172158370

例如,使用GET方法,對應請求資源的實體會作為響應實體返回;而使用HEAD方法時,響應實體中只包含請求資源的實體首部資訊(不會返回主體部分)。

204 No Content

請求已成功處理,但是返回的響應報文中不包含實體的主體部分。

image-20210622172459814

一般在只需要從客戶端往伺服器傳送資訊,而對客戶端不需要傳送新資訊內容時使用。

206 Partial Content

當客戶端發起的是HTTP範圍請求(即請求頭中使用了欄位Range),伺服器若成功執行,則返回響應碼206。

image-20210622172825786

301 Moved Permanently

永久重定向,表明請求的資源已被分配了新的URI,以後請求該資源應使用新的URI

302 Found

臨時重定向,請求的資源被分配了臨時的新URI,希望使用者本次能使用新的URI請求該資源。

303 See Other

功能和302相同,但明確的表示客戶端應採用GET方法獲取資源。

304 Not Modified

客戶端傳送了附帶條件的請求時,伺服器端允許請求訪問資源,但是請求條件未滿足的情況。

400 Bad Request

該狀態碼錶示請求報文存在語法錯誤,需要對請求內容進行修改後再次進行請求。

401 Unauthorized

若之前沒有進行請求,則表示客戶端傳送的請求需要包含通過HTTP認證的認證資訊;若之前已經進行過請求,則表示使用者認證失敗。

image-20210622191016915

返回401的響應中必須包含一個WWW-Authenticate首部用以質詢使用者資訊,瀏覽器初次接收到401響應時,會彈出認證用的對話視窗。

403 Forbidden

拒絕對請求資源的訪問,發生403的情況:

  • 未獲得檔案系統訪問許可權
  • 使用受限制的IP地址訪問網站資源
404 Not Found
  • 伺服器上找不到請求的資源
  • 拒絕請求但不想向客戶端表明原因
500 Internal Server Errot
  • 伺服器端在執行請求時發生了錯誤
  • Web應用存在bug或者出現臨時故障
503 Service Unavailable

伺服器此時無法處理請求(服務暫時不可用)。出現503的可能原因:

  • 伺服器暫時處於超負荷狀態
  • 伺服器正進行停機維護

如果事先得知解除上述狀況需要的時間,服務端最好在響應報文中寫入Retry-After首部欄位再返回給客戶端。

參考資料

《圖解HTTP》 by 上野宣

相關文章