天天看點

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

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

HTTP請求方法

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

GET

用來請求通路已被URI識别的資源。指定的資源經伺服器解析後傳回響應内容。

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

POST

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

PUT

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

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

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

DELETE

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

HEAD

HEAD方法和GET方法一樣,隻是不傳回響應封包的主體部分,一般用來确認URI的有效性以及資源更新的日期時間。

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

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

Options

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

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

HTTP響應狀态碼

響應狀态碼的職責在于告知用戶端請求的處理結果。

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

五類響應狀态碼

在三位的響應狀态碼中,第一位代表了相應的類别,後兩位無任何含義,隻是狀态碼的代号。

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

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

200 OK

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

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

204 No Content

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

一般在隻需要從用戶端往伺服器發送資訊,而對用戶端不需要發送新資訊内容時使用。

206 Partial Content

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

303伺服器響應碼,HTTP請求方法及響應狀态碼詳解

301 Moved Permanently

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

302 Found

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

303 See Other

功能和302相同,但明确的表示用戶端應采用GET方法擷取資源。

304 Not Modified

用戶端發送了附帶條件的請求時,伺服器端允許請求通路資源,但是請求條件未滿足的情況。

400 Bad Request

該狀态碼表示請求封包存在文法錯誤,需要對請求内容進行修改後再次進行請求。

401 Unauthorized

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

303伺服器響應碼,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 上野宣