HTTP請求方法和響應狀態詳解
HTTP請求方法
HTTP1.0/1.1支援的所有請求方法如下所示:
GET
用來請求訪問已被URI識別的資源。指定的資源經伺服器解析後返回響應內容。
POST
POST方法用來傳輸實體的主體
(一般是身份認證資訊資料或者是請求服務的引數資料),雖GET方法也能做到,但一般不用。POST的功能和GET很類似,但POST的主要目的並不是獲取響應的主體內容。
PUT
PUT方法用來傳輸檔案,要求在請求報文的主體中包含檔案內容,然後將檔案儲存請求URI指定的位置。
但是由於PUT方法自身不帶驗證機制,所以為了保障Web網站安全(防止惡意檔案上傳),一般不使用PUT方法。
狀態碼204表明檔案傳輸成功,且沒有資料返回。
DELETE
DELETE用來刪除檔案,是與PUT方法完全相反的方法,使用DELETE方法可以按照請求URI刪除指定的資源。同樣,DELETE方法本身也不帶驗證機制,一般Web網站都不會使用DELETE方法。
HEAD
HEAD方法和GET方法一樣,只是不返回響應報文的主體部分,一般用來確認URI的有效性以及資源更新的日期時間
。
上述例子通過HEAD方法請求響應得到響應報文的首部,根據首部就可以確認請求URI是否有效以及請求資源的更新時間。
Options
OPTIONS方法用來查詢針對請求URI指定資源支援的請求方法。
上述例子表明請求URI指定資源支援的請求方法有GET、POST、HEAD、OPTIONS。
HTTP響應狀態碼
響應狀態碼的職責在於告知客戶端請求的處理結果。
五類響應狀態碼
在三位的響應狀態碼中,第一位代表了相應的類別,後兩位無任何含義,只是狀態碼的代號。
在上述五類響應狀態碼中,著重關注成功狀態碼(2XX)、客戶端錯誤狀態碼(4XX)以及伺服器錯誤狀態碼(5XX)。
200 OK
表示請求被正常處理。而根據不同請求方法,得到的響應報文中的響應實體資訊也不同。
例如,使用GET方法,對應請求資源的實體會作為響應實體返回;而使用HEAD方法時,響應實體中只包含請求資源的實體首部資訊(不會返回主體部分)。
204 No Content
請求已成功處理,但是返回的響應報文中不包含實體的主體部分。
一般在只需要從客戶端往伺服器傳送資訊,而對客戶端不需要傳送新資訊內容時使用。
206 Partial Content
當客戶端發起的是HTTP範圍請求
(即請求頭中使用了欄位Range),伺服器若成功執行,則返回響應碼206。
301 Moved Permanently
永久重定向,表明請求的資源已被分配了新的URI,以後請求該資源應使用新的URI
。
302 Found
臨時重定向,請求的資源被分配了臨時的新URI,希望使用者本次
能使用新的URI請求該資源。
303 See Other
功能和302相同,但明確的表示客戶端應採用GET方法獲取資源。
304 Not Modified
客戶端傳送了附帶條件的請求
時,伺服器端允許請求訪問資源,但是請求條件未滿足的情況。
400 Bad Request
該狀態碼錶示請求報文存在語法錯誤
,需要對請求內容進行修改後再次進行請求。
401 Unauthorized
若之前沒有進行請求,則表示客戶端傳送的請求需要包含通過HTTP認證的認證資訊;若之前已經進行過請求,則表示使用者認證失敗。
返回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 上野宣