HTTP請求方法和響應狀态詳解
HTTP請求方法
HTTP1.0/1.1支援的所有請求方法如下所示:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CNhJzYiFWZ2YmMlJTOjNWO4ATZmZWYlFmY0E2NmVzY08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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 上野宣